Ich habe eine Liste von Tagesnamen (normalerweise von Montag bis Samstag, obwohl spezielle Fälle zutreffen), aus denen ich ein Wörterbuch erstellen möchte. Ich möchte den Wert jedes Tages auf Null initialisieren.
Wenn ich eine Liste von Nullen mit der gleichen Länge der Liste von Tagen hätte, wäre dies ein einfacher Anwendungsfall von zip()
. Eine Liste von Nullen ist jedoch eine Verschwendung von Speicherplatz, und wenn das die einzige Lösung wäre, würde ich genauso schnell etwas tun wie:
Gibt es einen pythischeren Weg?
Abgesehen von dict.fromkeys
können Sie auch dict-comprehension
verwenden,
aber fromkeys()
ist schneller als dict comprehensions:
Für 2.6 und früher:
%Vor% timeit
Vergleiche:
Wie in Kommentaren von @Eumiro und @mgilson erwähnt, ist es wichtig zu beachten, dass fromkeys()
und dict-comprehensions
verschiedene Objekte zurückgeben können, wenn die verwendeten Werte änderbare Objekte sind:
Verwenden Sie die .fromkeys()
-Klassenmethode :
Er erstellt ein Wörterbuch mit den Elementen des ersten Arguments (einer Sequenz) als Schlüssel und dem zweiten Argument (standardmäßig None
) als Wert für alle Einträge.
Es liegt in der Natur dieser Methode, den Wert für alle Schlüssel wiederzuverwenden; Übergeben Sie keinen änderbaren Wert wie eine Liste oder ein dict, und erwarten Sie, dass für jeden Schlüssel separate Kopien dieses veränderbaren Werts erstellt werden. Verwenden Sie in diesem Fall stattdessen ein Diktatverständnis:
%Vor%Tags und Links python list dictionary