Если у меня есть словарь, как:
{ 'a': 1, 'b': 2, 'c': 3 }
Как я могу преобразовать это в это?
[ ('a', 1), ('b', 2), ('c', 3) ]
И как я могу преобразовать это в это?
[ (1, 'a'), (2, 'b'), (3, 'c') ]
Если у меня есть словарь, как:
{ 'a': 1, 'b': 2, 'c': 3 }
Как я могу преобразовать это в это?
[ ('a', 1), ('b', 2), ('c', 3) ]
И как я могу преобразовать это в это?
[ (1, 'a'), (2, 'b'), (3, 'c') ]
[tuple(reversed(x)) for x in d.items()]
x
что уже естьtuple
в вашем коде (это природаitems
создания итерируемого изtuple
s), было бы проще / быстрее просто сделать[x[::-1] for x in d.items()]
; реверсивный срез напрямую создает реверсированныйtuple
правильный размер, вместо того, чтобыtuple
конструктор итеративно заполнял (с перераспределением и изменением размера в конце) atuple
изreversed
итератора.k, v
в таких случаях не всегда требуется шаблон.compatibility
тег из-за различий py2.x // py3.xОтветы:
Это не в том порядке, в каком вы хотите, но у диктов нет какого-либо конкретного порядка. 1 Сортируйте это или организуйте это как необходимо.
Смотрите: items () , iteritems ()
В Python 3.x вы бы не использовали
iteritems
(который больше не существует), а вместо этого использовалиitems
, который теперь возвращает «представление» в словарные элементы. Смотрите документ Что нового для Python 3.0 и новую документацию по представлениям .1: Сохранение порядка вставки для dicts было добавлено в Python 3.7
источник
так как никто не сделал, я добавлю версии py3k:
источник
Вы можете использовать список понимания.
получит тебя
[ ('a', 1), ('b', 2), ('c', 3) ]
идругой пример.
Если хотите, читайте больше о списках , очень интересно, что вы можете с ними сделать.
источник
Создать список именованных кортежей
Часто может быть очень удобно использовать namedtuple . Например, у вас есть словарь «имя» в качестве ключей и «оценка» в качестве значений, таких как:
Вы можете перечислить элементы в виде кортежей, отсортировать, если хотите, и получить имя и оценку, скажем, игрока с наибольшим количеством очков (индекс = 0), очень Pythonically, как это:
Как это сделать:
список в случайном порядке или в порядке следования коллекций.OrderedDict :
в порядке, отсортированном по значению («оценка»):
отсортированы с наименьшим количеством баллов:
отсортированы с наибольшим количеством баллов:
источник
То , что вы хотите , это
dict
«sitems()
иiteritems()
методы.items
возвращает список кортежей (ключ, значение). Так как кортежи являются неизменяемыми, их нельзя изменить. Таким образом, вы должны перебирать элементы и создавать новые кортежи, чтобы получить обратные корни (значение, ключ). Для итерацииiteritems
предпочтительнее, поскольку он использует генератор для создания кортежей (ключ, значение), а не для хранения всего списка в памяти.источник
и
источник
Это последние изменения в Python 3.x и Python 2.x
Для использования Python3.x
Для Python 2.7 используйте
источник
источник
К
keys()
иvalues()
методы словаря иzip
.zip
вернет список кортежей, который действует как упорядоченный словарь.Демо-версия:
источник
collections.OrderedDict()
что лучше работает с несколькими версиями Python HTTP Requests lib. Несмотря на то, что мне не нравитсяzip
название функции, оно несколько расплывчатое / перегруженное.zip
-ификация не является «глубоким» приведением, т. Е. Если есть вложенные дети, они не будут затронуты. Возможно, вам придется свернуть свою собственную рекурсию.источник
Проще было бы
Второй не проще, но да.
источник