【发布时间】:2021-09-03 09:10:15
【问题描述】:
要求
如果我提供的键不在字典中,我想定义一个返回最大键的值的defaultdict。基本上我正在寻找一种方法来存储配置信息的扭曲,这些值默认为其最后定义的值。
目前的解决方案
我的实现如下:
from collections import defaultdict
d = defaultdict(lambda: d[max(d.keys())])
d.update({2010: 10, 2011: 20, 2013: 30 })
for year in [2010, 2011, 2013, 2014]:
print(f"{year}: {d[year]}")
正确产生:
2010: 10
2011: 20
2013: 30
2014: 30
(更复杂的版本也可以返回小于最小键的值)。
问题
有没有更优雅的方式来定义 lambda 函数而不要求您知道字典的名称?
【问题讨论】:
-
当有很多键时,每次搜索最大的键会变得非常慢。这听起来不像是默认字典的工作。
-
另外,请记住,当您查找丢失的键时,defaultdicts 插入默认值。这听起来不像您在这里需要的行为。
标签: python defaultdict