簡體   English   中英

如何將嵌套的 defaultdict() 默認為指定長度的列表?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM