在Python中合并两个不等长的列表
我有两个列表。一个看起来像这样:
['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',而Alex对应的是'NO', 'NO', 'YES', 'NO', 'YES', 'NO'。有没有办法把这两个列表合并成一个字典呢?
我本来打算写一个函数,像这样:
def people():
List1[0]=List2[0:6]
但是这样会改变列表1。我尝试了这个:
dict(List1[0]: List2[0:6])
但出现了错误。
2 个回答
0
试试用 d = {List1[0] : List2[0:6]}
这个写法。你现在用的 :
语法是在调用字典的构造函数,但其实你需要用 {}
这种方式来实现。
8
你可以使用字典推导式来实现:
{x: l2[6*i:6*(i+1)] for i,x in enumerate(l1)}
如果你想看到一个复杂的版本,使用了itertools库,虽然总会有人提到这个方法,它看起来会像这样:dict(zip(l1, itertools.izip_longest(*[iter(l2)]*6)))
…真让人头疼。