Ich möchte davon profitieren:
keys = [1,2,3]
dazu:
{1: None, 2: None, 3: None}
Gibt es eine pythonische Methode?
Dies ist ein hässlicher Weg, dies zu tun:
>>> keys = [1,2,3]
>>> dict([(1,2)])
{1: 2}
>>> dict(zip(keys, [None]*len(keys)))
{1: None, 2: None, 3: None}
dictionary
python
Juanjo Conti
quelle
quelle
dict.fromkeys([1, 2, 3], [])
werden alle Schlüssel derselben Liste zugeordnet, und wenn Sie einen ändern, werden alle geändert.{k:[] for k in [1, 2, 3]}
ist jedoch immer noch sicher.Niemand wollte eine Lösung zum Verständnis von Diktaten geben?
quelle
False
. B. ).quelle
dict.fromkeys(keys, [])
Ausgabe:
quelle
keyDict
ist irreführend, da die erste Codezeile aset
und nicht a zurückgibtdict
.quelle
TypeError: 'type' object is not iterable
?list
ist ein Typ. Wenn Sie nicht so etwas habenlist = []
, gibt Ihnen die obige Methode immer den gleichen FehlerIn vielen Workflows , bei denen Sie einen Standard / Anfangswert für beliebige Tasten anhängen möchten, müssen Sie nicht brauchen , um Hash jede Taste einzeln vor der Zeit. Sie können verwenden
collections.defaultdict
. Beispielsweise:Dies ist effizienter und erspart das Hashing aller Schlüssel bei der Instanziierung. Darüber hinaus
defaultdict
handelt es sich um eine Unterklasse vondict
, sodass normalerweise keine Rückkonvertierung in ein reguläres Wörterbuch erforderlich ist.Für Workflows, in denen Sie Steuerelemente für zulässige Schlüssel benötigen , können Sie
dict.fromkeys
gemäß der akzeptierten Antwort Folgendes verwenden:quelle