Python 统计、排序
2020-04-11 本文已影响0人
京樂春水
统计Counter 统计列表中元素的个数
代码如下:
from collections import Counter
l = [1, 1, 2, 2, 3, 3, 11, 99, 10, 11, 22, 55, 44, 22, 33, 44, 66, 99, 5, 1, 3, 22, 33]
temp = Counter(l)
# 显示前三个最多的元素
print(temp.most_common(3))
# 将其转换为dict类型
print(dict(temp))
运行结果如下:
[(1, 3), (3, 3), (22, 3)]
{1: 3, 2: 2, 3: 3, 11: 2, 99: 2, 10: 1, 22: 3, 55: 1, 44: 2, 33: 2, 66: 1, 5: 1}
接着,可以将统计完的数据使用sorted进行排序
代码如下:
from collections import Counter
l = [("a", 11), ("e", 1),("b", 22),("a", 11),("d", 10),("a", 10),("d", 10),("a", 11),("c", 3),("a", 11)]
temp = Counter(l)
# 将其转换为dict类型
d = dict(temp)
print("统计结果")
print(d)
print("以字母排序")
print(sorted(d.items(), key = lambda x: x[0], reverse = True))
print("统计出的次数排序")
print(sorted(d.items(), key = lambda x: x[1]))
# print(sorted(d.items(), key = lambda x: x[0][1]))
print("以字母对应的数字排序")
print(sorted(d.items(), key = lambda x: x[0][1]))
print("先以字母排序,再以字母对应的数字排序")
print(sorted(d.items(), key = lambda x: (x[0][1], x[0][0])))
运行结果如下:
统计结果
{('a', 11): 4, ('e', 1): 1, ('b', 22): 1, ('d', 10): 2, ('a', 10): 1, ('c', 3): 1}
以字母排序
[(('a', 10), 1), (('a', 11), 4), (('b', 22), 1), (('c', 3), 1), (('d', 10), 2), (('e', 1), 1)]
统计出的次数排序
[(('e', 1), 1), (('b', 22), 1), (('a', 10), 1), (('c', 3), 1), (('d', 10), 2), (('a', 11), 4)]
以字母对应的数字排序
[(('e', 1), 1), (('c', 3), 1), (('d', 10), 2), (('a', 10), 1), (('a', 11), 4), (('b', 22), 1)]
先以字母排序,再以字母对应的数字排序
[(('e', 1), 1), (('c', 3), 1), (('a', 10), 1), (('d', 10), 2), (('a', 11), 4), (('b', 22), 1)]
指定用哪个关键字排序,可以用lambda;如果要指定两个以上的关键字,请参考代码最后一个例子
如需反序,请使用"reverse = True"
参考:
https://www.cnblogs.com/rubylouvre/archive/2011/06/19/2084801.html
https://www.cnblogs.com/ahochen/p/10670573.html