Ich habe den folgenden Stack-Überlauf-Post zu den dict-Comprehensions in Python2.7
und Python 3+
gefunden: Erstellen Sie ein Wörterbuch mit Listenverständnis in Python , das besagt, dass ich Wörterbücher wie folgt anwenden kann:
Ich habe es in Python 3 versucht. Es löst jedoch eine Ausnahme aus.
%Vor% Beide Versionen erhöhen ValueError
mit ValueError: need more than 1 value to unpack
.
Was ist der einfachste / direkteste Weg, um ein Wörterbuchverständnis in Python3 zu verstehen?
Beim Schleifen über ein Wörterbuch werden nur die Schlüssel zurückgegeben. Verwenden Sie d.items()
, um beide Schlüssel und Werte zu durchlaufen:
Die ValueError
-Ausnahme, die Sie sehen, ist nicht ein Diktat-Verständnisproblem, noch ist es auf Python 3 beschränkt; Sie sehen das gleiche Problem in Python 2 oder mit einer normalen for
-Schleife:
weil bei jeder Iteration nur ein Element zurückgegeben wird.
Ohne eine Umwandlung ist {k: v for k, v in d.items()}
nur eine ausführliche und kostspielige d.copy()
; Verwenden Sie ein Diktatverständnis nur, wenn Sie ein wenig mehr mit den Schlüsseln oder Werten tun oder Bedingungen oder ein komplexeres Schleifenkonstrukt verwenden.
Gut gesagt - du kannst Gegenstände in Python3 fallen lassen, wenn du es so machst:
%Vor%{Taste: d [Taste] für Taste d}
und dies bietet die Möglichkeit, auch Bedingungen zu verwenden
%Vor%Viel Spaß!
Tags und Links python python-3.x