将字典转换为元组列表

时间:2017-01-22 18:40:42

标签: python list dictionary tuples

给出这样的字典:

dic = {(7, 3): 18.51, (1, 3): 18.751, (5, 6): 34.917, (9, 8): 18.9738}

我想将它转换为这样的元组列表:

my_list = [(7, 3, 18.51), (1, 3, 18.751), (5, 6, 34.917), (9, 8, 18.9738)]

我本可以使用一个循环,但我想知道是否有一种巧妙的方法来代替循环。

1 个答案:

答案 0 :(得分:5)

只需在某个生成器上使用list(..)

my_list = list(key+(val,) for key,val in dic.items())

这是有效的:

  • list(..)将迭代作为输入并将其转换为列表;和
  • key+(val,) for key,val dic.items()是一个生成器,它接受dic的一对键值,并将其转换为将val附加到key的元组。

由于我们使用生成器作为列表,我们可以使用 list comprehension 来简化它:

my_list = [key+(val,) for key,val in dic.items()]

最后请注意元组出现的顺序不固定这是因为dict存储元素的顺序也不固定。