Python, преобразующий значения из dicts в кортежи - PullRequest
8 голосов
/ 08 июля 2010

У меня есть список словарей, который выглядит следующим образом:

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

Я хотел бы преобразовать значения из каждого dict в список кортежей, подобный этому:

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

Как я могу это сделать?

Ответы [ 3 ]

19 голосов
/ 08 июля 2010
>>> l = [{'id':1,'name':'Foo'},{'id':2,'name':'Bar'}]
>>> [tuple(d.values()) for d in l]
[(1, 'Foo'), (2, 'Bar')]
11 голосов
/ 08 июля 2010

Обратите внимание, что подход в ответе SilentGhost не гарантирует порядок каждого кортежа, поскольку словари и их values() не имеют собственного порядка. Таким образом, в общем случае вы можете получить ('Foo', 1) и (1, 'Foo').

Если это неприемлемо и вам определенно нужен сначала id, вам придется сделать это явно:

[(d['id'], d['name']) for d in l]
2 голосов
/ 05 сентября 2017

Это преобразует словарь в кортеж всегда в определенном order

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...