[英]How to default a nested defaultdict() to a list of specified length?
我想知道如何將嵌套的 defaultdict 默認為列表[0,0,0]
。 例如,我想讓這個分層默認字典。
dic01 = {'year2017': {'jul_to_sep_temperature':[25, 20, 17],
'oct_to_dec_temperature':[10, 8, 7]},
'year2018': {'jan_to_mar_temperature':[ 8, 9, 10].
'apr_to_jun_temperature':[ 0, 0, 0]}
}
為了制作這個嵌套字典,我做了dic01 = defaultdict(dict)
並添加了一個字典dic01['year2018']['jan_temperature'] = [8, 9, 10]
。 我的問題是是否可以在不綁定 [0, 0, 0] 的情況下更新列表的每個元素。 在其他作品中,如果我將 defaultdict 設為defaultdict(dict)
,我必須在使用它之前綁定一個列表 [0,0,0] ,我想跳過這個綁定過程。
# The way I do this
dic01['year2018']['jul_to_sep_temperature'] = [0,0,0] # -> how to omit this procedure?
dic01['year2018']['jul_to_sep_temperature'][0] = 25
# The way I want to do this
dic01['year2018']['jul_to_sep_temperature'][0] = 25 # by the end of July
您可以指定您希望默認值為默認值為[0, 0, 0]
的defaultdict
的默認值
from collections import defaultdict
dic01 = defaultdict(lambda: defaultdict(lambda: [0, 0, 0]))
dic01['year2018']['jul_to_sep_temperature'][0] = 25
print(dic01)
版畫
defaultdict(<function <lambda> at 0x7f4dc28ac598>, {'year2018': defaultdict(<function <lambda>.<locals>.<lambda> at 0x7f4dc28ac510>, {'jul_to_sep_temperature': [25, 0, 0]})})
您可以將其視為常規嵌套字典
不確定這是否比你想要避免的更優雅,但是:
dic01 = defaultdict(lambda: defaultdict(lambda: [0,0,0]))
dic01['year2018']['jul_to_sep_temperature'][0] = 25
您可以通過傳遞lambda函數來嵌套defaultdicts
值
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.