Python将字典中的值转换为元组

Posted

技术标签:

【中文标题】Python将字典中的值转换为元组【英文标题】:Python converting the values from dicts into a tuples 【发布时间】:2011-03-13 05:44:22 【问题描述】:

我有一个字典列表,如下所示:

['id':1,'name':'Foo','id':2,'name':'Bar']

我想将每个字典中的值转换成这样的元组列表:

[(1,'Foo'),(2,'Bar')]

我该怎么做?

【问题讨论】:

【参考方案1】:
>>> l = ['id':1,'name':'Foo','id':2,'name':'Bar']
>>> [tuple(d.values()) for d in l]
[(1, 'Foo'), (2, 'Bar')]

【讨论】:

@Marco:它为给定的键提供一致的顺序,这个答案没有错。 你不能保证id 总是在name 之前出现,尤其是在不同的版本/实现中。例如,在 IronPython(例如 trypython.org)中输入上述示例当前会给出[('Foo', 1), ('Bar', 2)]。你甚至不能确定两个具有相同键的字典会以相同的顺序给出它们的keys()(它们会用于像这样的简单情况,但这是你不应该依赖的实现细节)。跨度> 现在可以使用了,Dictionaries preserve insertion order. Note that updating a key does not affect the order. Keys added after deletion are inserted at the end. link【参考方案2】:

请注意,SilentGhost 答案中的方法不能保证每个元组的顺序,因为字典及其 values() 没有固有顺序。因此,在一般情况下,您可能会得到('Foo', 1)(1, 'Foo')

如果这是不可接受的,并且您肯定首先需要 id,您必须明确地这样做:

[(d['id'], d['name']) for d in l]

【讨论】:

【参考方案3】:

这将始终在定义的order 中将字典转换为元组

d = 'x': 1 , 'y':2 order = ['y','x'] tuple([d[field] for field in order])

【讨论】:

dicts 现在是有序的(最近的 python 标准承诺),所以现在没有必要了。

以上是关于Python将字典中的值转换为元组的主要内容,如果未能解决你的问题,请参考以下文章

python中的字典

为什么将Python dict转换为元组会返回一组键?

为元组中的每个元素命名,提高程序可读性

Python基础(3) - 去掉列表或元组中的重复元素

如何将字典转换为元组列表?

将嵌套列表的字典转换为元组列表