python 进阶之collections中的defaultdict

假设一个场景:统计一个列表中每一个数据的数目,要求:尽可能不设定初始值

如果你想不出来,你可以先看看设置初始值的最基本的方法。

[En]

If you can’t figure it out, you can first look at the most basic way to set the initial value.

  • 首先需要导入库
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方法的补充

在初始化并且设定一些特定值的时候可以用到

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}

Original: https://blog.51cto.com/coderusher/5639114
Author: Coderusher
Title: python 进阶之collections中的defaultdict

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/500206/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球