Se eu tiver um dicionário como:
{ 'a': 1, 'b': 2, 'c': 3 }
Como posso convertê-lo para isso?
[ ('a', 1), ('b', 2), ('c', 3) ]
E como posso convertê-lo para isso?
[ (1, 'a'), (2, 'b'), (3, 'c') ]
Se eu tiver um dicionário como:
{ 'a': 1, 'b': 2, 'c': 3 }
Como posso convertê-lo para isso?
[ ('a', 1), ('b', 2), ('c', 3) ]
E como posso convertê-lo para isso?
[ (1, 'a'), (2, 'b'), (3, 'c') ]
[tuple(reversed(x)) for x in d.items()]
x
já existetuple
no seu código (é da natureza deitems
produzir um iterável detuple
s), seria mais simples / mais rápido fazê-lo[x[::-1] for x in d.items()]
; a fatia de reversão constrói diretamente uma reversãotuple
do tamanho adequado, em vez de fazer com que otuple
construtor preencha iterativamente (com localização geral e redimensionamento no final) atuple
de umreversed
iterador.k, v
padrão nesses casos.compatibility
tag causa de py2.x // py3.x diferençasRespostas:
Não está na ordem que você deseja, mas os ditados não têm nenhuma ordem específica. 1 Classifique ou organize-o conforme necessário.
Veja: items () , iteritems ()
No Python 3.x, você não usaria
iteritems
(que não existe mais), mas usariaitems
, que agora retorna uma "visualização" nos itens do dicionário. Consulte o documento O que há de novo para o Python 3.0 e a nova documentação sobre visualizações .1: A preservação da ordem de inserção para dictos foi adicionada no Python 3.7
fonte
como ninguém mais o fez, adicionarei versões do py3k:
fonte
Você pode usar a compreensão da lista.
vai pegar você
[ ('a', 1), ('b', 2), ('c', 3) ]
eo outro exemplo.
Leia mais sobre as compreensões de lista, se quiser, é muito interessante o que você pode fazer com elas.
fonte
Crie uma lista de nomeados
Muitas vezes, pode ser muito útil usar o nomeado duplo . Por exemplo, você tem um dicionário de 'nome' como chaves e 'pontuação' como valores como:
Você pode listar os itens como tuplas, classificados, se quiser, e obter o nome e a pontuação de, digamos, o jogador com a pontuação mais alta (índice = 0), muito pythonicamente assim:
Como fazer isso:
lista em ordem aleatória ou mantendo a ordem das coleções.OrderedDict :
em ordem, classificado por valor ('score'):
classificados com a menor pontuação primeiro:
classificados com a pontuação mais alta primeiro:
fonte
O que você quer é
dict
'sitems()
eiteritems()
métodos.items
retorna uma lista de tuplas (chave, valor). Como as tuplas são imutáveis, elas não podem ser revertidas. Portanto, é necessário iterar os itens e criar novas tuplas para obter as tuplas invertidas (valor, chave). Para iteração,iteritems
é preferível, pois usa um gerador para produzir as tuplas (chave, valor) em vez de manter a lista inteira na memória.fonte
e
fonte
Estas são as mudanças mais recentes do Python 3.xe do Python 2.x
Para Python3.x, use
Para Python 2.7 use
fonte
fonte
Por
keys()
evalues()
métodos de dicionário ezip
.zip
retornará uma lista de tuplas que age como um dicionário ordenado.Demo:
fonte
collections.OrderedDict()
àquela que funciona melhor com várias versões do Python HTTP Requests lib. Mesmo que eu não goste dozip
nome da função como sendo um pouco vago / sobrecarregado.zip
-ification não é uma transmissão "profunda", ou seja, se houver filhos aninhados, eles não serão afetados. Você pode ter que rolar sua própria recursão.fonte
Um mais simples seria
O segundo não é mais simples, mas sim.
fonte