Para a tupla, t = ((1, 'a'),(2, 'b'))
dict(t)
retorna{1: 'a', 2: 'b'}
Existe uma boa maneira de obter {'a': 1, 'b': 2}
(chaves e vals trocados)?
Em última análise, quero poder retornar um 1
dado 'a'
ou um 2
dado 'b'
, talvez converter para um ditado não seja o melhor caminho.
python
dictionary
tuples
Jake
fonte
fonte
dict(zip(*zip(*t)[::-1]))
. Isso é mais lento, mais feio e usa muito mais memória ... provavelmente 3x.dict((x, y) for x, y, z in t)
oudict((x, (y, z)) for x, y, z in t)
obter o segundo e o terceiro valores como uma tupla.Um método um pouco mais simples:
fonte
reverse
explicitamente explicitado.map
é mais rápido que a compreensão quando a coisa que está sendo mapeada é outra função interna (comoreversed
); na maioria dos outros casos, o oposto é verdadeiro. Mas é melhor ao perfil de palpite :)Ainda mais conciso se você estiver no python 2.7:
fonte
Ou:
fonte
Se houver vários valores para a mesma chave, o código a seguir anexará esses valores a uma lista correspondente à sua chave,
fonte
Aqui estão algumas maneiras de fazer isso:
fonte