【发布时间】:2018-04-08 23:32:36
【问题描述】:
如何根据 Counter 对象的值对 python 列表进行排序?
c = Counter({"a": 1, "b": 6, "c":19})
l = ["b", "c", "a"]
# after sorting based on counter values
l = ["c", "b", "a"]
【问题讨论】:
标签: python python-3.x
如何根据 Counter 对象的值对 python 列表进行排序?
c = Counter({"a": 1, "b": 6, "c":19})
l = ["b", "c", "a"]
# after sorting based on counter values
l = ["c", "b", "a"]
【问题讨论】:
标签: python python-3.x
您可以使用 Counter 本身的 most_common 方法而不是 sorted 来获得相同的结果。
most_common = Counter({"a": 1, "b": 6, "c":19}).most_common()
列表理解:
most_common = [item[0] for item in most_common]
操作员:
import operator
most_common = list(map(operator.itemgetter(0), most_common))
结果:
['c', 'b', 'a']
【讨论】:
sorted() 采用如下关键函数:
sorted(l, key=lambda x: -c[x])
或就地为:
l.sort(key=lambda x: -c[x])
from collections import Counter
c = Counter({"a": 1, "b": 6, "c": 19})
l = ["b", "c", "a"]
# after sorting based on counter values
l = ["c", "b", "a"]
print(sorted(l, key=lambda x: -c[x]))
['c', 'b', 'a']
【讨论】: