Wörterbuchverständnis in Python 3

10

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:

%Vor%

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?

    
Jon 10.12.2013, 08:38
quelle

2 Antworten

15

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:

%Vor%

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:

%Vor%

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.

    
Martijn Pieters 10.12.2013, 08:39
quelle
1

Gut gesagt - du kannst Gegenstände in Python3 fallen lassen, wenn du es so machst:

  

{Taste: d [Taste] für Taste d}

%Vor%

und dies bietet die Möglichkeit, auch Bedingungen zu verwenden

%Vor%

Viel Spaß!

    
RandallShanePhD 16.03.2017 23:59
quelle

Tags und Links