我该如何转换元组列表,如:
query_res = [('a3','b6','c1'),
('a3','b6','c2'),
('a3','b6','c3'),
('a3','b7','c4'),
('a4','b8','c5'),
('a4','b8','c6')]
Run Code Online (Sandbox Code Playgroud)
像这样的字典:
result = {
'a3': {
'b6': ['c1', 'c2', 'c3'],
'b7': ['c4']
},
'a4': {
'b8': ['c5', 'c6']
}
}
Run Code Online (Sandbox Code Playgroud)
我尝试了defaultdict,错误只能获取内部dict,如何映射a到res此处?:
res = defaultdict(list)
for a, b, c in query_res:
res[b].append(c)
Run Code Online (Sandbox Code Playgroud)
使用 dict.setdefault
例如:
query_res = [('a3','b6','c1'),
('a3','b6','c2'),
('a3','b6','c3'),
('a3','b7','c4'),
('a4','b8','c5'),
('a4','b8','c6')]
result = {}
for key, subkey, value in query_res:
result.setdefault(key, {}).setdefault(subkey, []).append(value)
print(result)
Run Code Online (Sandbox Code Playgroud)
输出:
{'a3':
{'b6': ['c1', 'c2', 'c3'],
'b7': ['c4']
},
'a4':
{'b8': ['c5', 'c6']
}
}
Run Code Online (Sandbox Code Playgroud)