在python中组合两个不均匀的列表

时间:2013-02-11 05:11:26

标签: python list dictionary

我有2个清单。一个看起来像

['jim', 'bob', 'mike', 'kim', 'Alex']

,另一个看起来像

['YES', 'YES', 'YES', 'YES', 'YES', 'YES', 'YES', 'YES', 'YES', 'YES', 'YES', 'YES', 'YES', 'YES', 'YES', 'YES', 'YES', 'YES', 'NO', 'NO', 'NO', 'NO', 'NO', 'NO', 'NO', 'NO', 'YES', 'NO', 'YES', 'NO']

列表1中的每个名称对应于列表2中的前6个项目。因此,jim ='YES','YES','YES','YES','YES','YES'和Alex ='NO' ,'不','是','不','是','不'。有没有办法将这两个列表合并成一个字典?

我打算写一个像

这样的函数
def people():
    List1[0]=List2[0:6]

但那会改变List1。我试过了

dict(List1[0]: List2[0:6]) 

但收到错误

2 个答案:

答案 0 :(得分:8)

你可以使用词典理解:

{x: l2[6*i:6*(i+1)] for i,x in enumerate(l1)}

如果你想要一个可怕的itertools版本,有人必须迟早发布,它看起来像dict(zip(l1, itertools.izip_longest(*[iter(l2)]*6))) ... blergh。

答案 1 :(得分:0)

请尝试使用d = {List1[0] : List2[0:6]}。您尝试使用dict语法调用:构造函数,但需要使用{}来执行此操作。