有时需要对列表、元素或者文本字符串进行统计词频,列表中也就是元素出现的次数,在Python中我们可以使用collections模块的
Counter功能函数方便的得到统计数据:
from collections import Counter
from pprint import pprint
ls = [1,2,3,4,5,6,7,8,9,0,"一","二","三","四","五","六","七",1,2,"七"]
count_result = Counter(ls)
pprint(count_result)
输出:
Counter({1: 2,
2: 2,
'七': 2,
3: 1,
4: 1,
5: 1,
6: 1,
7: 1,
8: 1,
9: 1,
0: 1,
'一': 1,
'二': 1,
'三': 1,
'四': 1,
'五': 1,
'六': 1})
可以看到是形成了一个字典格式的统计结果。
遍历结果:
for key,value in count_result.items():
print(key,":",value)
字典是无序的,如果要对字典进行排序,可以用下面的方法:
对字典的键排序:
print(sorted(count_result)) #只能对同类型的键排序,不支持不同类型,如本example中列表元素有int和str两种类型,不支持对key排序
一般我们需求大都是需要根据值进行排序,也就是根据词频排序:
#对值排序 升序排序
print(sorted(count_result.items(),key=lambda x:x[1]))
#对值排序 降序排序
print(sorted(count_result.items(),key=lambda x:x[1],reverse=True))
输出:
[(3, 1), (4, 1), (5, 1), (6, 1), (7, 1), (8, 1), (9, 1), (0, 1), ('一', 1), ('二', 1), ('三', 1), ('四', 1), ('五', 1), ('六', 1), (1, 2), (2, 2), ('七', 2)]
[(1, 2), (2, 2), ('七', 2), (3, 1), (4, 1), (5, 1), (6, 1), (7, 1), (8, 1), (9, 1), (0, 1), ('一', 1), ('二', 1), ('三', 1), ('四', 1), ('五', 1), ('六', 1)]
可以看到生成的是元祖列表
下面是全部代码:
from collections import Counter
from pprint import pprint
ls = [1,2,3,4,5,6,7,8,9,0,"一","二","三","四","五","六","七",1,2,"七"]
#对列表中元素出现的次数进行统计
count_result = Counter(ls)
pprint(count_result)
# 输出键和值
for key,value in count_result.items():
print(key,":",value)
# 根据键进行排序
# print(sorted(count_result))
#对值排序 升序排序
print(sorted(count_result.items(),key=lambda x:x[1]))
#对值排序 降序排序
print(sorted(count_result.items(),key=lambda x:x[1],reverse=True))
QQ交流群:121160124
微信公众号:

343

被折叠的 条评论
为什么被折叠?



