Korrigieren Sie mich, wenn ich falsch liege, aber ich glaube nicht, dass Sie ein Wörterbuch von defaultdicts dafür wollen. Was Sie versuchen, die eingebaute in dict
Methode leicht zu tun, wird dadurch erreicht, setdefault
:
>>> my_dict = {}
>>> my_dict.setdefault('numbers', []).extend([1, 2, 3])
>>> my_dict
{u'numbers': [1, 2, 3]}
>>> my_dict.setdefault('numbers', []).append(4)
>>> my_dict
{u'numbers': [1, 2, 3, 4]}
setdefault
nimmt einen (möglicherweise fehlt) Schlüssel und einen Standard es zu initialisieren, wenn es ist fehlt. Wenn der Schlüssel bereits vorhanden ist, wird er einfach zurückgegeben.
Wie John Kugelman in den Kommentaren weist darauf hin, kann dies auch defaultdict
in gewohnter Weise unter Verwendung erreicht werden:
>>> from collections import defaultdict
>>> my_dict = defaultdict(list)
>>> my_dict
defaultdict(<type 'list'>, {})
>>> my_dict['numbers'].extend([1, 2, 3])
>>> my_dict
defaultdict(<type 'list'>, {u'numbers': [1, 2, 3]})
>>> my_dict['numbers'].append(4)
>>> my_dict
defaultdict(<type 'list'>, {u'numbers': [1, 2, 3, 4]})
Sooo ... Das ist es: Sie können nicht '' extend' DefaultDict's. .. – ForceBru
Vielleicht willst du einfach 'my_dict = defaultdict (list)'? –
ändern Sie einfach zu my_dict = defaultdict (Liste), wenn Sie die Liste nach nicht festgelegten Schlüssel verwenden möchten. –