Python将值从dicts转换为元组

chr*_*ism 8 python dictionary tuples

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

[{'id':1,'name':'Foo'},{'id':2,'name':'Bar'}]
Run Code Online (Sandbox Code Playgroud)

我想将每个dict的值转换为这样的元组列表:

[(1,'Foo'),(2,'Bar')]
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

Sil*_*ost 20

>>> l = [{'id':1,'name':'Foo'},{'id':2,'name':'Bar'}]
>>> [tuple(d.values()) for d in l]
[(1, 'Foo'), (2, 'Bar')]
Run Code Online (Sandbox Code Playgroud)

  • 你不能保证`id`总会在`name`之前出现,特别是在不同的版本/实现中.例如,在IronPython中输入上面的例子(例如,trypython.org),目前给出了`[('Foo',1),('Bar',2)]`.你甚至不能确定具有相同键的两个dicts将以相同的顺序给出它们的`keys()`(它们将用于这样的简单情况,但这是你不应该依赖的实现细节). (4认同)
  • 这现在有效,“字典保留插入顺序。请注意,更新密钥不会影响顺序。删除后添加的键将插入到末尾。` [链接](https://docs.python.org/3.7/library/stdtypes.html#dict.values) (2认同)

bob*_*nce 11

请注意,SilentGhost的答案中的方法并不能保证每个元组的顺序,因为字典和它们values()没有固有的顺序.所以你还不如拿到('Foo', 1)(1, 'Foo'),在一般情况下.

如果这是不可接受的,你肯定需要第id一个,你必须明确地这样做:

[(d['id'], d['name']) for d in l]
Run Code Online (Sandbox Code Playgroud)