除了使用反向列表推导式生成倒序列表外,是否有一种Pythonic的方法可以按值对Counter进行排序?如果是这样,它会比下面的代码更快:
除了使用反向列表推导式生成倒序列表外,是否有一种Pythonic的方法可以按值对Counter进行排序?如果是这样,它会比下面的代码更快:
>>> from collections import Counter
>>> x = Counter({'a':5, 'b':3, 'c':7})
>>> sorted(x)
['a', 'b', 'c']
>>> sorted(x.items())
[('a', 5), ('b', 3), ('c', 7)]
>>> [(l,k) for k,l in sorted([(j,i) for i,j in x.items()])]
[('b', 3), ('a', 5), ('c', 7)]
>>> [(l,k) for k,l in sorted([(j,i) for i,j in x.items()], reverse=True)]
[('c', 7), ('a', 5), ('b', 3)
OrderedDict
,因为现在的dict
保留了插入顺序。所以直接使用y = dict(x.most_common())
即可。 - Walter TrossOrderedDict
也提供了dict
没有的功能,特别是关于比较方面的功能。例如,OrderedDict([('a', 1), ('b', 2)]) == OrderedDict([('b', 2), ('a', 1)])
的结果为False,而{'a': 1, 'b': 2} == {'b': 2, 'a': 1}
的结果为True。 - Flimm