Si j'ai un dictionnaire comme:
{ 'a': 1, 'b': 2, 'c': 3 }
Comment puis-je le convertir en cela?
[ ('a', 1), ('b', 2), ('c', 3) ]
Et comment puis-je le convertir en cela?
[ (1, 'a'), (2, 'b'), (3, 'c') ]
Si j'ai un dictionnaire comme:
{ 'a': 1, 'b': 2, 'c': 3 }
Comment puis-je le convertir en cela?
[ ('a', 1), ('b', 2), ('c', 3) ]
Et comment puis-je le convertir en cela?
[ (1, 'a'), (2, 'b'), (3, 'c') ]
[tuple(reversed(x)) for x in d.items()]
x
c'est déjà untuple
dans votre code (c'est la nature deitems
produire un itérable detuple
s), il serait plus simple / plus rapide de le faire[x[::-1] for x in d.items()]
; la tranche d'inversion construit directement un inversétuple
de la taille appropriée plutôt que d'avoir letuple
constructeur à remplir de manière itérative (avec surutilisation et redimensionnement à la fin) a àtuple
partir d'unreversed
itérateur.k, v
modèle dans de tels cas.compatibility
balise ajoutée en raison des différences py2.x // py3.xRéponses:
Ce n'est pas dans l'ordre que vous voulez, mais les mecs n'ont de toute façon aucun ordre spécifique. 1 Triez-le ou organisez-le si nécessaire.
Voir: items () , iteritems ()
Dans Python 3.x, vous n'utilisez pas
iteritems
(qui n'existe plus), mais utilisez plutôtitems
, qui renvoie désormais une "vue" dans les éléments du dictionnaire. Voir le document Quoi de neuf pour Python 3.0 et la nouvelle documentation sur les vues .1: La préservation de l'ordre d'insertion des dict a été ajoutée dans Python 3.7
la source
puisque personne d'autre ne l'a fait, j'ajouterai des versions py3k:
la source
Vous pouvez utiliser des listes de compréhension.
vous obtiendrez
[ ('a', 1), ('b', 2), ('c', 3) ]
etl'autre exemple.
En savoir plus sur les listes de compréhension si vous le souhaitez, il est très intéressant de savoir ce que vous pouvez en faire.
la source
Créer une liste de couples nommés
Il peut souvent être très pratique d'utiliser namedtuple . Par exemple, vous avez un dictionnaire de «nom» comme clés et de «score» comme valeurs comme:
Vous pouvez lister les éléments sous forme de tuples, triés si vous le souhaitez, et obtenir le nom et le score de, disons le joueur avec le score le plus élevé (index = 0) très Pythoniquement comme ceci:
Comment procéder:
liste dans un ordre aléatoire ou en gardant l'ordre des collections .
dans l'ordre, triés par valeur («score»):
triés avec le score le plus bas en premier:
triés avec le score le plus élevé en premier:
la source
Ce que vous voulez, ce sont
dict
les méthodesitems()
et lesiteritems()
méthodes.items
renvoie une liste de tuples (clé, valeur). Les tuples étant immuables, ils ne peuvent pas être inversés. Ainsi, vous devez itérer les éléments et créer de nouveaux tuples pour obtenir les tuples inversés (valeur, clé). Pour l'itération,iteritems
est préférable car il utilise un générateur pour produire les tuples (clé, valeur) plutôt que d'avoir à garder la liste entière en mémoire.la source
et
la source
Ce sont les changements de rupture de Python 3.x et Python 2.x
Pour Python3.x, utilisez
Pour Python 2.7, utilisez
la source
la source
Par
keys()
etvalues()
méthodes de dictionnaire etzip
.zip
renverra une liste de tuples qui agit comme un dictionnaire ordonné.Démo:
la source
collections.OrderedDict()
celle qui fonctionne mieux avec plusieurs versions de la bibliothèque de requêtes HTTP Python. Même si je n'aime pas lezip
nom de la fonction comme étant quelque peu vague / surchargé.zip
-ification n'est pas un casting "profond", c'est-à-dire que s'il y a des enfants imbriqués, ils ne seront pas affectés. Vous devrez peut-être lancer votre propre récursivité.la source
Un plus simple serait
Le second n'est pas plus simple mais oui.
la source