Wie füge ich einen Schlüssel zu einem bestehenden Wörterbuch hinzu? Es hat keine .add()
Methode.
Ohne die Klammertasten auf meiner Tastatur wäre es für mich extrem schwierig, mit Python zu programmieren.
Wie füge ich einen Schlüssel zu einem bestehenden Wörterbuch hinzu? Es hat keine .add()
Methode.
Die herkömmliche Syntax lautet d[key] = value
Wenn auf Ihrer Tastatur die Tasten für eckige Klammern fehlen, können Sie das auch tun:
d.__setitem__(key, value)
In der Tat, die Definition __getitem__
y __setitem__
Methoden können Sie Ihre eigene Klasse so gestalten, dass sie die Syntax der eckigen Klammern unterstützt. Siehe _Eintauchen in Python, 5.6. Spezielle Klassenmethoden_ .
Ohne die Klammertasten auf meiner Tastatur wäre es für mich extrem schwierig, mit Python zu programmieren.
Dies war die einzige Möglichkeit, die ich finden konnte, um Wörterbuchwerte innerhalb eines Listenverstehens zu setzen. Danke
@chrisstevens, wenn Sie einen Wert in einer comprehension setzen wollen, habe ich folgenden Hack verwendet [a for a in my_dict if my_dict.update({'a': 1}) is None]
.
Wenn Sie ein Wörterbuch innerhalb eines Wörterbuchs hinzufügen möchten, können Sie dies auf diese Weise tun.
Beispiel: Hinzufügen eines neuen Eintrags zu Ihrem Wörterbuch und Unterwörterbuch
dictionary = {}
dictionary["new key"] = "some new entry" # add new dictionary entry
dictionary["dictionary_within_a_dictionary"] = {} # this is required by python
dictionary["dictionary_within_a_dictionary"]["sub_dict"] = {"other" : "dictionary"}
print (dictionary)
Ausgabe:
{'new key': 'some new entry', 'dictionary_within_a_dictionary': {'sub_dict': {'other': 'dictionarly'}}}
HINWEIS: Python verlangt, dass Sie zuerst eine Sub
dictionary["dictionary_within_a_dictionary"] = {}
bevor Sie Einträge hinzufügen.
Dies ist für die gestellte Frage genauso irrelevant wie die meisten Kommentare in den php.net-Handbuchseiten...
Nehmen wir an, Sie wollen in einer unveränderlichen Welt leben und tun no das Original ändern wollen, aber ein neues erstellen wollen dict
die das Ergebnis des Hinzufügens eines neuen Schlüssels zum Original ist.
In Python 3.5+ können Sie das tun:
params = {'a': 1, 'b': 2}
new_params = {**params, **{'c': 3}}
Das Python-2-Äquivalent ist:
params = {'a': 1, 'b': 2}
new_params = dict(params, **{'c': 3})
Nach einem dieser beiden Fälle:
params
ist immer noch gleich {'a': 1, 'b': 2}
と
new_params
ist gleich {'a': 1, 'b': 2, 'c': 3}
Es gibt Fälle, in denen Sie das Original nicht verändern wollen (Sie wollen nur das Ergebnis, das dem Original hinzugefügt wurde). Ich finde das eine erfrischende Alternative zu den folgenden:
params = {'a': 1, 'b': 2}
new_params = params.copy()
new_params['c'] = 3
o
params = {'a': 1, 'b': 2}
new_params = params.copy()
new_params.update({'c': 3})
In einem längeren Gespräch mit einem Kollegen, der die funktionale Programmierung befürwortet, wurde ein gutes Argument vorgebracht. Ein Nachteil des obigen Ansatzes ist, dass jemand, der den Code liest, nicht mit dem **
in Python (viele sind es nicht), dann wird es nicht offensichtlich sein, was vor sich geht. Es gibt Zeiten, in denen Sie einen weniger funktionalen Ansatz für eine bessere Lesbarkeit bevorzugen werden.
Diese beliebte Frage Adressen funktionell Methoden zur Zusammenführung von Wörterbüchern a
y b
.
Hier sind einige der einfacheren Methoden (getestet in Python 3)...
c = dict( a, **b ) ## see also https://stackoverflow.com/q/2255878
c = dict( list(a.items()) + list(b.items()) )
c = dict( i for d in [a,b] for i in d.items() )
Hinweis: Die erste Methode oben funktioniert nur, wenn die Schlüssel in b
sind Zeichenfolgen.
So fügen Sie ein einzelnes Element hinzu oder ändern es die b
Wörterbuch nur dieses eine Element enthalten würde...
c = dict( a, **{'d':'dog'} ) ## returns a dictionary based on 'a'
Dies ist gleichbedeutend mit...
def functional_dict_add( dictionary, key, value ):
temp = dictionary.copy()
temp[key] = value
return temp
c = functional_dict_add( a, 'd', 'dog' )
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.
0 Stimmen
Entweder verwenden Sie die akzeptierte Antwort: d['mynewkey'] = 'mynewvalue' oder Sie können val = d.setdefault('mynewkey', 'mynewvalue') verwenden.
2 Stimmen
Wenn Sie einfach <Wörterbuch>[<Schlüssel>] = <Wert> verwenden und der Schlüssel nicht existiert, wird er automatisch hinzugefügt.
2 Stimmen
Re @cs95, dies erzeugt auch ein neues Diktat mit einem zusätzlichen Schlüssel:
dict(existing_dict, new_key=new_val)
per stackoverflow.com/a/46647897/18404711 Stimmen
@MaxGhenis danke, das funktioniert gut für Python < 3.5 (mit einem Vorbehalt), ich habe eine Community-Wiki-Antwort hinzugefügt aquí .