Python 中的嵌套默认值

Nested Defaultdicts in Python

我在更新嵌套 defaultdict 中的列表时遇到问题。

这是我的代码:

a = ['20160115',    'shadyside medical building',   1, 'Review']
b = ['20160115',    'shadyside medical building',   1, 'Video']
c = ['20160215',    'shadyside medical building',   1, 'Video']
d = ['20160215',    'medical building',             1, 'Video']
f = [a,b,c,d]

nested_dict = defaultdict(dict)

for date,keyword,pos,feature in f:
    nested_dict[keyword].update({feature : [pos]})
    nested_dict[keyword].update({feature : [pos]})

这是输出:

{'shadyside medical building': 
                             {'Review': [1], 
                             'Video': [1]}, 
'medical building': 
                   {'Video': [1]}}

期望的输出是:

{'shadyside medical building': 
                             {'Review': [1], 
                             'Video': [1,1]}, 
'medical building': 
                   {'Video': [1]}}

请注意视频的第二项已添加到视频列表中。

您没有嵌套任何 defaultdict,所以这样做:

nested_dict = defaultdict(lambda: defaultdict(list))

nested_dict[keyword][feature].append(pos)

您还可以创建一个无限嵌套的 defaultdict:

NDict = lambda: None
NDict = lambda: defaultdict(NDict)

ouroboros = NDict()
ouroboros[1][2][3][4][5][6][7][8][9] = True