用 Python 将字典转换为元组列表

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

我想将字典转换为元组列表,但“按行”进行:第一个元组应包含第一个值,第二个元组应包含第二个值,依此类推。

我有一些工作代码,但我想知道是否有更惯用的方法,因为我的解决方案似乎太冗长了。

data = {
    'a': [1,2,3,4],
    'b': [1,2,3,5],
    'c': [1,2,3,6]
}

tuple_list = []
for i, x in enumerate(data['a']):
    tpl = []
    for key in data:
        val = data[key][i]
        tpl.append(val)
    tuple_list.append(tuple(tpl))

输出

[(1, 1, 1), (2, 2, 2), (3, 3, 3), (4, 5, 6)]
python dictionary tuples
2个回答
1
投票

您可以使用

zip
并行迭代多个迭代,生成元组,每个元组都有一个项目.

print(list(zip(*data.values())))
# Equivalent to 
# print(list(zip([1, 2, 3, 4], [1,2,3,5], [1, 2, 3, 6])))

0
投票

您可以使用以下单行代码:

list(zip(*data.values()))

解释:

data.values()
给你一个列表字典值(在这种情况下,列表)。接下来,我们使用
*
运算符将该列表解压缩为
zip
函数的三个单独参数。
zip
将几个可迭代对象作为参数,并从每个可迭代对象的各个元素创建元组。然后我们只需要将它从 zip 对象转换为列表(如果你要做任何进一步的处理,可以将它保留为 zip 对象)。

© www.soinside.com 2019 - 2024. All rights reserved.