繁体   English   中英

我如何将一个带有键的列表和另一个带有值的列表映射到字典中

[英]how can i map one list with keys and others lists with values into a dictionary

我想制作一个包含子词典的字典

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'}}
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'}}

尝试使用:

answer = {list_dict[l]: {K[i]: A[l][i] for i in range(len(K))} for l in range(len(list_dict))}

这将设置字典的答案,其中键是list_dict中的所有项目。 然后,这些值是字典,通过使用映射到A [l]中相应项目的K中的每个项目生成,其中l是list_dict中键的编号。

答案是:

{
'dict1': 
    {'k3': 'v3',
     'k2': 'v2',
     'k1': 'v1'},
'dict2': 
    {'k3': '3',
     'k2': '2',
     'k1': '1'}
}

希望这可以帮助。

您可以将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)

注意:它非常类似于: 在Python中将两个列表映射到字典中

另一种方法。

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])}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM