ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

defaultdict高级用法

2022-07-27 23:33:46  阅读:163  来源: 互联网

标签:defaultdict log missing 高级 用法 current result Key


说明

defaultdict数据结构允许调用者提供一个函数,用来在键名缺失的情况下,创建与这个
键对应的值。只要字典发现调用者想要访问的键不存在,就会触发这个函数,以返回应该
与键相关联的默认值

下面定义一个log_missing函数作为键名缺失时的挂钩,该函数总是会把这种键的默认值设为0。

def log_missing():
  print("Key added")
  return 0

下面这段代码通过定制的defaultdict字典,把increments列表里面描述的增量添加到current
这个普通字典所提供的初始量上面,但字典里一开始没有'red'和'orange'这两个键,因此
log_missing这个挂钩函数会触发两次,每次它都会打印'Key added'信息。

from collections import defaultdict
current = {'green': 12, 'blue': 3}
increments = [
  ('red', 5),
  ('blue', 17),
  ('orange', 9),
]
result = defaultdict(log_missing, current) # 2个参数的用法,参数1表示自定义的函数,参数2表示在current中存在的key将跳过,不在current中的key将添加默认值0(log_missing返回值)
print('Before:', dict(result))
for key, amount in increments:
  result[key] += amount
print('After:', dict(result))

>>>
Before: {'green': 12, 'blue': 3}
Key added
Key added
After: {'green': 12, 'blue': 20, 'red': 5, 'orange': 9}

标签:defaultdict,log,missing,高级,用法,current,result,Key
来源: https://www.cnblogs.com/weiweivip666/p/16526963.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有