python tuple de dict
Pour le tuple, t = ((1, 'a'),(2, 'b'))
dict(t)
retourne {1: 'a', 2: 'b'}
Est-il un bon moyen d'obtenir {'a': 1, 'b': 2}
(les clés et les vals échangé)?
En fin de compte, je veux être en mesure de retourner 1
donné 'a'
ou 2
donné 'b'
, peut-être de le convertir à un dict n'est pas la meilleure façon.
Vous devez vous connecter pour publier un commentaire.
Essayer:
dict(zip(*zip(*t)[::-1]))
. C'est plus lent, plus laid et de l'aide de façon 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)
pour obtenir les deuxième et troisième valeurs comme un n-uplet.Un peu plus simple méthode:
reverse
explicitement énoncées.map
est plus rapide qu'une compréhension lorsque la chose étant mappé est une autre fonction intégrée (commereversed
); dans la plupart des autres cas, l'inverse est vrai. Mais c'est mieux de profil que de deviner 🙂Encore plus concis si vous êtes sur python 2.7:
Ou:
S'il existe plusieurs valeurs pour la même clé, le code suivant va ajouter ces valeurs dans une liste correspondant à leur clé,
Voici quelques façons de le faire: