Dictionnaire de la Compréhension en Python 3
J'ai trouvé la suite d'un débordement de pile post sur dict interprétations dans Python2.7
et Python 3+
: Créer un dictionnaire avec la compréhension de liste en Python indiquant que je peux appliquer dictionnaire des compréhensions comme ceci:
d = {key: value for (key, value) in sequence}
Je l'ai essayé en Python 3. Cependant, il soulève une exception.
d = {'a':1, 'b':2, 'c':3, 'd':4}
{key : value for (key, value) in d}
{key : value for key, value in d}
Les deux versions de soulever un ValueError
dire que ValueError: need more than 1 value to unpack
.
Ce qui est le plus simple /le moyen le plus direct pour faire un dictionnaire de la compréhension dans Python3?
- Que dict compréhension s'attend à une séquence de paires clé-valeur. Vous nourrissez un dict, ce qui n'est pas une séquence de paires clé-valeur.
- Je sais que c'est une vieille question, mais je voulais juste ajouter que pour éviter l'erreur,
d
devrait être(('a', 1), ('b', 2), ('c', 3'), ('d', 4))
Vous devez vous connecter pour publier un commentaire.
En boucle sur un dictionnaire uniquement les rendements de la clés. Utilisation
d.items()
faire une boucle sur les touches du clavier et valeurs:La
ValueError
exception que vous voyez est pas un dict compréhension du problème, ni est-il limité à Python 3; vous auriez du voir le même problème en Python 2 ou avec régulièrementfor
boucle:parce que chaque itération, il est à seulement un élément donné.
Sans une transformation,
{k: v for k, v in d.items()}
est juste une verbose et coûteuxd.copy()
; utiliser un dict compréhension uniquement lorsque vous en faire un peu plus avec les touches ou des valeurs, ou des conditions d'utilisation ou de plus en plus complexe de la boucle de construire.Bien dit ci - dessus-vous pouvez déposer des objets dans Python3 si vous faites de cette façon:
et ce prévoit la possibilité d'utiliser des conditions de
Profitez-en!
Dictionnaire de compréhension s'agit de générer les éléments dans le dictionnaire par une certaine logique: