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]
。但是,除非您想不断更新字典中的值,否则元组将比列表更好。