Python 如何通过组合两个列表中的项来创建词典?
我要收集此模式中的元素:Python 如何通过组合两个列表中的项来创建词典?,python,list,dictionary,Python,List,Dictionary,我要收集此模式中的元素: key_list=['number','alpha'] value_list=[['1','a'],['2','b']] 如何在循环中执行此操作 您可以简单地输入值列表的值,然后使用键列表,通过字典理解得到结果,如下所示 dict = {} dict.setdefault(key_list[0],[]).append(value_list[0][0]) dict.setdefault(key_list[0],[]).append(value_list[1][0]) d
key_list=['number','alpha']
value_list=[['1','a'],['2','b']]
如何在循环中执行此操作 您可以简单地输入值列表
的值,然后使用键列表
,通过字典理解得到结果,如下所示
dict = {}
dict.setdefault(key_list[0],[]).append(value_list[0][0])
dict.setdefault(key_list[0],[]).append(value_list[1][0])
dict.setdefault(key_list[1],[]).append(value_list[0][1])
dict.setdefault(key_list[1],[]).append(value_list[1][1])
>>> {k: v for k, v in zip(key_list, zip(*value_list))}
{'alpha': ('a', 'b'), 'number': ('1', '2')}
你可以一步一步地理解,就像这样
dict = {}
dict.setdefault(key_list[0],[]).append(value_list[0][0])
dict.setdefault(key_list[0],[]).append(value_list[1][0])
dict.setdefault(key_list[1],[]).append(value_list[0][1])
dict.setdefault(key_list[1],[]).append(value_list[1][1])
>>> {k: v for k, v in zip(key_list, zip(*value_list))}
{'alpha': ('a', 'b'), 'number': ('1', '2')}
现在,zip
用key\u list
ping这个会给我们
>>> list(zip(*value_list))
[('1', '2'), ('a', 'b')]
现在,您可以使用dict
函数创建字典,如mhawke所示
>>> list(zip(key_list, zip(*value_list)))
[('number', ('1', '2')), ('alpha', ('a', 'b'))]
或者使用字典理解,如我上面所示。对于这类事情非常方便:
>>> dict(zip(key_list, zip(*value_list)))
{'alpha': ('a', 'b'), 'number': ('1', '2')}
输出
key_list=['number','alpha']
value_list=[['1','a'],['2','b']]
d = dict(zip(key_list, zip(*value_list)))
print(d)
非常感谢。但我不明白为什么在值之前有一个“*”_list@Sbioer它记录
value\u list
的值,并将所有值作为参数传递给zip
函数。还有一个问题。如何将该元组转换为列表?@Sbioer您只需使用list
函数即可。例如:列表((1,2,3))
将为您提供[1,2,3]
。但是,除非您想不断更新字典中的值,否则元组将比列表更好。