将列表中的每个元素转换为键值对

问题描述 投票:2回答:2

我有两个清单

list1 = [1,a,2,b,3,c]
list2 = [5,d,6,e,7,f]

我试着用list(zip(list1, list2))

那就是我得到的:

[(1, 5), ('a', 'd'), (2, 6), ('b', 'e'), (3, 7), ('c', 'f')]

我希望这样的东西成为我的输出:

{1:a, 5:d, 2:b, 6:e, 3:c,7:f}

任何帮助表示赞赏。

python python-3.x
2个回答
8
投票

通过iterzip

>>> it = iter(list1 + list2)
>>> dict(zip(it,it))
{1: 'a', 2: 'b', 3: 'c', 5: 'd', 6: 'e', 7: 'f'}

2
投票

我先把你的两个清单加在一起

>>> values = list1 + list2
>>> values
[1, 'a', 2, 'b', 3, 'c', 5, 'd', 6, 'e', 7, 'f']

然后使用dict理解来通过每个其他元素跨越列表,并将其压缩到相同的步幅但偏移一个。

>>> {key:value for key,value in zip(values[::2], values[1::2])}
{1: 'a', 2: 'b', 3: 'c', 5: 'd', 6: 'e', 7: 'f'}
© www.soinside.com 2019 - 2024. All rights reserved.