Erstellen Sie ein Wörterbuch mit Listenverstehen in Python

Ich mag die Python-Liste Verständnis-Syntax.

Kann man auch Wörterbücher erstellen? Zum Beispiel durch Iteration über Schlüsselpaare und Werte:

mydict = {(k,v) for (k,v) in blah blah blah} # doesn't work 

    9 Solutions collect form web for “Erstellen Sie ein Wörterbuch mit Listenverstehen in Python”

    In Python 2.6 und früher kann der Dict-Konstruktor ein Iterable von Schlüssel / Wert-Paaren empfangen:

     d = dict((key, value) for (key, value) in iterable) 

    Von Python 2.7 und 3 an können Sie die Dict-Verständnis-Syntax direkt nutzen:

     d = {key: value for (key, value) in iterable} 

    Natürlich können Sie das erträgliche in irgendeiner Weise verwenden, wie Sie es wünschen (Tupel und Listen Literale, Generatorverständnisse, Listenverständnisse, Generatorfunktionen, Funktionszusammensetzung … kreativ), solange jedes Element aus zwei Elementen austauschbar ist:

     d = {value: foo(value) for value in sequence if bar(value)} def key_value_gen(k): yield chr(k+65) yield chr((k+13)%26+65) d = dict(map(key_value_gen, range(26))) 

    In Python 3 / Python 2.7+ dict Verständnisse funktioniert wie folgt:

     d = {k:v for k, v in iterable} 

    Für Python 2.6 und früher, siehe Fortran's Antwort .

    In der Tat müssen Sie nicht einmal über die iterable iterieren, wenn es bereits begreift eine Art von Mapping, der dict Konstruktor tut es gnädig für Sie:

     >>> ts = [(1, 2), (3, 4), (5, 6)] >>> dict(ts) {1: 2, 3: 4, 5: 6} >>> gen = ((i, i+1) for i in range(1, 6, 2)) >>> gen <generator object <genexpr> at 0xb7201c5c> >>> dict(gen) {1: 2, 3: 4, 5: 6} 

    In Python 2.7 geht es wie:

     >>> list1, list2 = ['a', 'b', 'c'], [1,2,3] >>> dict( zip( list1, list2)) {'a': 1, 'c': 3, 'b': 2} 

    Zip sie !

    Verwenden Sie Python dict Verständnisse. Hier ist die Seite, um mehr darüber zu erfahren: Dict Comprehensions .

    Um auf die Antwort von @ Fortran hinzuzufügen, wenn du über eine Liste der Schlüssel key_list sowie eine Liste der Werte value_list iterieren value_list :

     d = dict((key, value) for (key, value) in zip(key_list, value_list)) 

    oder

     d = {(key, value) for (key, value) in zip(key_list, value_list)} 

    Einfach für ältere Version <2.7

     d = dict((i,True) for i in [1,2,3]) 

    Für Version> = 2.7

     d = {i: True for i in [1,2,3]} 

    Erstellen Sie ein Wörterbuch mit Listenverstehen in Python

    Ich mag die Python-Liste Verständnis-Syntax.

    Kann man auch Wörterbücher erstellen? Zum Beispiel durch Iteration über Schlüsselpaare und Werte:

     mydict = {(k,v) for (k,v) in blah blah blah} 

    Angenommen, blah blah blah ist ein erträglich von zwei-tupeln – du bist so nah. Lassen Sie uns so viele "blahs" schaffen:

     blahs = [('blah0', 'blah'), ('blah1', 'blah'), ('blah2', 'blah'), ('blah3', 'blah')] 

    Dict Verständnis Syntax

    Nun ist die Syntax hier der Mapping-Teil. Was macht dies ein dict Verständnis statt eines gesetzten Verständnisses (was ist Ihr Pseudocode nähert sich) ist der Doppelpunkt :

     mydict = {k: v for k, v in blahs} 

    Und nun:

     >>> mydict {'blah0': 'blah', 'blah1': 'blah', 'blah3': 'blah', 'blah2': 'blah'} 

    Filter hinzufügen:

    Genau wie Listenverständnisse können Sie bis zum Ende einen Filterteil hinzufügen:

     >>> mydict = {k: v for k, v in blahs if not int(k[-1]) % 2} >>> mydict {'blah0': 'blah', 'blah2': 'blah'} 

    Hier testen wir, ob das letzte Zeichen durch 2 teilbar ist.

    Versuche dies,

     def get_dic_from_two_lists(keys, values): return { keys[i] : values[i] for i in range(len(keys)) } 

    Angenommen, wir haben zwei Listen Land und Kapital

     country = ['India', 'Pakistan', 'China'] capital = ['New Delhi', 'Islamabad', 'Beijing'] 

    Dann erstellen Sie Wörterbuch aus den beiden Listen:

     print get_dic_from_two_lists(country, capital) 

    Die Ausgabe ist so,

     {'Pakistan': 'Islamabad', 'China': 'Beijing', 'India': 'New Delhi'} 
    Python ist die beste Programmiersprache der Welt.