【问题标题】:Convert a dictionary into a list of tuples将字典转换为元组列表
【发布时间】:2017-06-07 06:41:09
【问题描述】:

给定这样的字典:

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)]

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

【问题讨论】:

  • 您尝试过什么,有什么问题?仅.items() 就可以帮助您完成大部分工作。

标签: python list dictionary tuples


【解决方案1】:

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

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

这是因为:

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

由于我们使用列表生成器,我们可以使用 列表推导来简化它:

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

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

【讨论】:

  • 不,这不太符合 OP 的要求。他们有二元组键并想要三元组输出(k1, k2, v)
  • @jonrsharpe:我明白了,也许更通用的方法是使用+,因为密钥可能包含更多项目。
  • @Don.C:查看更新的答案。感谢 jonrsharpe 的评论。
  • 非常感谢
猜你喜欢
  • 2013-04-01
  • 1970-01-01
  • 2010-09-20
  • 2020-12-08
相关资源
最近更新 更多