统计序列中,重复元素的个数
users = ['someone1', 'someone2', 'someone', 'someone1', 'someone2', 'someone2'] # 传统的统计方法 users_dict = {} for user in users: if user not in users_dict: users_dict[user] = 1 else: users_dict[user] += 1 print(users_dict)
# 简化
for user in users:
users_dict.setdefault(user, 0) # 如果users_dict[user]的key,即user不存在,则默认为users_dict[user] = 0
users_dict[user] += 1
print(users_dict)
# 使用defaultdict from collections import defaultdict default_dict = defaultdict(int) #defaultdict方法接收一个可调用的对象 for user in users: default_dict[user] += 1 print(default_dict) // 返回defaultdict(<class 'int'>, {'someone1': 2, 'someone2': 3, 'someone': 1})
# 使用自定义方法作为参数,生成默认的数据类型和值
def gen_format():
return {
'name': '',
'nums': 0
}
default_dict = defaultdict(gen_format)
default_dict['group1'] // defaultdict(<function gen_format at 0x000001C5045DC1E0>, {'group1': {'name': '', 'nums': 0}})