我想创建一个包含子词典的词典
K = ['k1', 'k2', 'k3'] # key list
A = [['v1', 'v2', 'v3'], ['1', '2', '3']] #value list
list_dict = ['dict1', 'dict2']
D = {d : {} for d in list_dict}
我想这样做:
D = {'dict1': {'k1': 'v1',
'k2': 'v2',
'k3': 'v3'},
'dict2': {'k1': '1',
'k2': '2',
'k3': '3'}}
答案 0 :(得分:1)
In [70]: D = {d : dict(zip(K,v)) for d,v in zip(list_dict, A)}
In [71]: D
Out[71]:
{'dict1': {'k1': 'v1', 'k2': 'v2', 'k3': 'v3'},
'dict2': {'k1': '1', 'k2': '2', 'k3': '3'}}
答案 1 :(得分:0)
尝试使用:
answer = {list_dict[l]: {K[i]: A[l][i] for i in range(len(K))} for l in range(len(list_dict))}
这会设置一个字典的答案,其中键是list_dict中的所有项目。然后使用K中映射到A [l]中相应项目的每个项目生成字典,其中l是list_dict中键的编号。
答案是:{
'dict1':
{'k3': 'v3',
'k2': 'v2',
'k1': 'v1'},
'dict2':
{'k3': '3',
'k2': '2',
'k1': '1'}
}
希望这有帮助。
答案 2 :(得分:0)
您可以将zip功能与dict混合使用,如下所示:
K = ['k1', 'k2', 'k3'] # key list
A = [['v1', 'v2', 'v3'], ['1', '2', '3']] # value list
list_dict = ['dict1', 'dict2']
D = {}
for i in range(len(A)):
D[list_dict[i]] = (dict(zip(K, A[i])))
print(D)
非常相似
答案 3 :(得分:0)
另一种方法。
d = dict.fromkeys(list_dict)
for i, k in enumerate(sorted(d.keys())) :
d[k] = {key:value for key, value in zip(K, A[i])}