美文网首页
Python 统计、排序

Python 统计、排序

作者: 京樂春水 | 来源:发表于2020-04-11 16:44 被阅读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

相关文章

网友评论

      本文标题:Python 统计、排序

      本文链接:https://www.haomeiwen.com/subject/vqxumhtx.html