Pour le tuple, t = ((1, 'a'),(2, 'b'))
dict(t)
retourne{1: 'a', 2: 'b'}
Existe-t-il un bon moyen d'obtenir {'a': 1, 'b': 2}
(les clés et les vals échangés)?
En fin de compte, je veux être en mesure de revenir 1
donné 'a'
ou 2
donné 'b'
, peut-être que la conversion en dict n'est pas la meilleure façon.
python
dictionary
tuples
Jake
la source
la source
dict(zip(*zip(*t)[::-1]))
. C'est plus lent, plus laid et utilise beaucoup plus de mémoire ... probablement 3x.dict((x, y) for x, y, z in t)
oudict((x, (y, z)) for x, y, z in t)
obtenir les deuxième et troisième valeurs sous forme de tuple.Une méthode un peu plus simple:
la source
reverse
explicitement précisé.map
est plus rapide qu'une compréhension lorsque l'objet mappé est une autre fonction intégrée (commereversed
); dans la plupart des autres cas, le contraire est vrai. Mais il vaut mieux profiler que deviner :)Encore plus concis si vous êtes sur python 2.7:
la source
Ou:
la source
S'il existe plusieurs valeurs pour la même clé, le code suivant ajoutera ces valeurs à une liste correspondant à leur clé,
la source
Voici quelques façons de le faire:
la source