关于python统计一个列表中每个元素出现的频率


第一种写法:

a = ['h','h','e','a','a']
result = {}
for i in a:
    if i not in result:
        result[i] = 1
    else:
        result[i] += 1
print(result)

最后统计成一个字典,字典的键是列表中元素的值,字典的值是出现的次数
不过每循环一次都要进行逻辑判断很浪费性能


第二种写法:

a = ['h','h','e','a','a']
result = {}
for i in a:
    result.setdefault(i,0)
    result[i] += 1

print(result)

setdefault(key,value)函数会自动判断字典中是否包含对应的键,如果包含那么不对字典进行操作,如果不包含那么对字典对应的键设置一个值,第一个参数是键,第二个参数是数值

这样的代码比较简洁,并且比第一种写法少进行一些逻辑判断,具体实现原理可以阅读这个函数的源码

其实还可以利用collections 模块下的类,不过我打算等我学完整个模块,单独写(水)一篇文章

posted @ 2019-10-07 15:32  Hello_wshuo  阅读(100)  评论(0编辑  收藏  举报