ich Python v2.7 Wörterbücher bin mit verschachtelten ineinander wie folgt aus:Wie verschachtelte Wörterbücher in Python initialisieren
def example(format_str, year, value):
format_to_year_to_value_dict = {}
# In the actual code there are many format_str and year values,
# not just the one inserted here.
if not format_str in format_to_year_to_value_dict:
format_to_year_to_value_dict[format_str] = {}
format_to_year_to_value_dict[format_str][year] = value
Es scheint ein wenig ungeschickt die erste Ebene Wörterbuch mit einem leeren Wörterbuch zu initialisieren, bevor eingefügt in das Wörterbuch der zweiten Ebene. Gibt es eine Möglichkeit, einen Wert festzulegen und gleichzeitig ein Wörterbuch auf der ersten Ebene zu erstellen, wenn dort noch kein Wörterbuch vorhanden ist? Ich stelle mir so etwas wie dies die bedingte initializer zu vermeiden:
def example(format_str, year, value):
format_to_year_to_value_dict = {}
add_dict_value(format_to_year_to_value_dict[format_str], year, value)
Auch was ist, wenn der innere dict sollte sich auf eine Liste initialisieren?
def example(format_str, year, value):
format_to_year_to_value_dict = {}
# In the actual code there are many format_str and year values,
# not just the one inserted here.
if not format_str in format_to_year_to_value_dict:
format_to_year_to_value_dict[format_str] = {}
if not year in format_to_year_to_value_dict[format_str]:
format_to_year_to_value_dict[format_str][year] = []
format_to_year_to_value_dict[format_str][year].append(value)
Gibt es etwas wie defaultdict für die Listen im inneren dict-Fall? – WilliamKF
War nur das Bearbeiten in. Sie brauchen nur eine Funktion, die 'defaultdict (list)' und nicht nur '{}' für fehlende Schlüssel zurückgibt. –