如何将嵌套的 defaultdict() 默认为指定长度的列表?
How to default a nested defaultdict() to a list of specified length?
我想知道如何将嵌套的 defaultdict 默认设置为列表 [0,0,0]
。例如,我想制作这个分层 defaultdict。
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
您可以指定您想要一个默认值为 defaultdict
的默认值 [0, 0, 0]
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
任何您想要的方式
我想知道如何将嵌套的 defaultdict 默认设置为列表 [0,0,0]
。例如,我想制作这个分层 defaultdict。
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
您可以指定您想要一个默认值为 defaultdict
的默认值 [0, 0, 0]
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
任何您想要的方式