我正在尝试使用带有键值对的字典,其中的值是一个列表,并将它们转换为一个元组列表。
我有以下字典:
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])]
我做错了什么?
答案 0 :(得分:6)
您可以zip
一起使用字典值:
>>> d = {'a': [33, 21, 4, 32], 'b': [6, 100, 8, 14]}
>>> list(zip(*d.values()))
[(33, 6), (21, 100), (4, 8), (32, 14)]
如果您只想有效地获取特定范围的值,您可以在使用 list 之前使用 itertools.islice
。
>>> from itertools import islice
>>> list(islice(zip(*d.values()), 2))
[(33, 6), (21, 100)]
答案 1 :(得分:2)
我更喜欢 Jab 提供的更快、更简洁的解决方案。
但是如果你有一个更大的输入字典,但只需要提取几个值,你也可以使用list comprehension
像这样:
lst = [(d['a'][i], d['b'][i]) for i in range(len(d['a']))]