Python:将包含值列表的键值对字典转换为元组列表



我正在尝试使用一个带有键值对的字典,其中的值是一个列表,并将它们转换为元组列表。

我有一本下面的字典:

d={'a': [33, 21, 4, 32], 'b': [6, 100, 8, 14]}

期望输出:

[(33, 6), (21, 100), (4, 8), (32, 14)]

下面是我尝试过的代码,但它并没有让我达到目的。

d={'a': [33, 21, 4, 32], 'b': [6, 100, 8, 14]}

# Converting into list of tuple 
list = [(key, value) for key, value in d.items()] 

# Printing list of tuple 
print(list) 

代码输出的列表值为:

[('a', [33, 21, 4, 32]), ('b', [6, 100, 8, 14])]

我做错了什么?

您可以将dict值zip放在一起:

>>> d = {'a': [33, 21, 4, 32], 'b': [6, 100, 8, 14]}
>>> list(zip(*d.values()))
[(33, 6), (21, 100), (4, 8), (32, 14)]

若您只想有效地获得特定范围的值,可以在使用列表之前使用itertools.islice

>>> from itertools import islice
>>> list(islice(zip(*d.values()), 2))
[(33, 6), (21, 100)]

我更喜欢Jab更快、更简洁的解决方案
但是,如果您有一个更大的输入字典,但只需要提取几个值,您也可以使用列表理解像这样:

lst = [(d['a'][i], d['b'][i]) for i in range(len(d['a']))]

最新更新