python 进阶之collections中的defaultdict
发布时间:2022-09-08 06:43:07 498
相关标签: # python# 数据
@[toc]
假设一个场景:统计一个列表中每一个数据的数目,要求:尽可能不设定初始值
如果想不出来,可以先看最基础的设定初始值的办法
- 首先需要导入库
from collections import defaultdict
原始方案
user_dict = {} users = ["bobby1", "bobby2", "bobby3", "bobby4", "bobby4", "bobby2", "bobby2"] for user in users: if user not in user_dict: user_dict[user] = 1 else: user_dict[user] += 1 print(user_dict)
改进
使用setdefault函数完成
user_dict = {} users = ["bobby1", "bobby2", "bobby3", "bobby4", "bobby4", "bobby2", "bobby2"] for user in users: user_dict.setdefault(user, 0) user_dict[user] += 1 print(user_dict)
改进的改进
使用collection中的defaultdict方法
default_dict = defaultdict(int)
users = ["bobby1", "bobby2", "bobby3", "bobby4", "bobby4", "bobby2", "bobby2"]
for user in users:
default_dict[user] += 1
print(default_dict)
# 关于defaultdict方法的补充
> 在初始化并且设定一些特定值的时候可以用到
```python
def gen_default():
return {
"name": "",
"nums": 0
}
default_dict = defaultdict(gen_default)
print(default_dict["group1"])
- 输出结果
defaultdict(
, {'bobby1': 1, 'bobby2': 3, 'bobby3': 1, 'bobby4': 2}) {'name': '', 'nums': 0}
文章来源: https://blog.51cto.com/coderusher/5639114
特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报