arc*_*ies 1 python list hierarchy
如果我得到以下格式的一些数据:
data = [
['Airbus', 'R&D', '01', 5],
['Airbus', 'R&D', '02', 8],
['Airbus', 'Marketing', '01', 9],
['Airbus', 'Marketing', '02', 54],
['Netgear', 'R&D', '01', 12],
['Netgear', 'R&D', '02', 5],
['Netgear', 'Marketing', '01', 6],
['Netgear', 'Marketing', '02', 11],
['Toyota', 'R&D', '01', 9],
['Toyota', 'R&D', '02', 52],
['Toyota', 'Marketing', '01', 43],
['Toyota', 'Marketing', '02', 34],
]
Run Code Online (Sandbox Code Playgroud)
我如何使用python来获得更多层次结构,即:
data = {
'Airbus': {
'R&D': {
'01': 5, '02': 8
},
'Marketing': {
'01': 9,'02': 54
}
},
'Netgear'
etc...
}
Run Code Online (Sandbox Code Playgroud)
?
嵌套defaultdict(或者可能dict.setdefault- >不太可读)非常简单:
d = collections.defaultdict(lambda:collections.defaultdict(dict))
for x,y,k,v in data:
d[x][y][k]=v
Run Code Online (Sandbox Code Playgroud)
并且相当印刷它:
>>> pprint.pprint(d)
{'Airbus': {'Marketing': {'01': 9, '02': 54},
'R&D': {'01': 5, '02': 8}},
'Netgear': {'Marketing': {'01': 6, '02': 11},
'R&D': {'01': 12, '02': 5}},
'Toyota': {'Marketing': {'01': 43, '02': 34},
'R&D': {'01': 9, '02': 52}}}
Run Code Online (Sandbox Code Playgroud)