Vraag Nieuwe sleutels aan een woordenboek toevoegen?


Is het mogelijk om een ​​sleutel toe te voegen aan een Python-woordenboek nadat deze is gemaakt? Het lijkt er geen te hebben .add() methode.


1904
2018-06-21 22:07


oorsprong


antwoorden:


>>> d = {'key':'value'}
>>> print(d)
{'key': 'value'}
>>> d['mynewkey'] = 'mynewvalue'
>>> print(d)
{'mynewkey': 'mynewvalue', 'key': 'value'}

2510
2018-06-21 22:09



>>> x = {1:2}
>>> print x
{1: 2}

>>> x.update({3:4})
>>> print x
{1: 2, 3: 4}

850
2017-07-22 14:48



Ik heb zin om informatie over Python-woordenboeken te verzamelen:

Een leeg woordenboek maken

data = {}
# OR
data = dict()

Een woordenboek maken met beginwaarden

data = {'a':1,'b':2,'c':3}
# OR
data = dict(a=1, b=2, c=3)
# OR
data = {k: v for k, v in (('a', 1),('b',2),('c',3))}

Eén waarde invoegen / bijwerken

data['a']=1  # Updates if 'a' exists, else adds 'a'
# OR
data.update({'a':1})
# OR
data.update(dict(a=1))
# OR
data.update(a=1)

Meerdere waarden invoegen / bijwerken

data.update({'c':3,'d':4})  # Updates 'c' and adds 'd'

Een samengevoegd woordenboek maken zonder de originelen te wijzigen

data3 = {}
data3.update(data)  # Modifies data3, not data
data3.update(data2)  # Modifies data3, not data2

Items in het woordenboek verwijderen

del data[key]  # Removes specific element in a dictionary
data.pop(key)  # Removes the key & returns the value
data.clear()  # Clears entire dictionary

Controleer of een sleutel al in het woordenboek staat

key in data

Per paar in een woordenboek herhalen

for key in data: # Iterates just through the keys, ignoring the values
for key, value in d.items(): # Iterates through the pairs
for key in d.keys(): # Iterates just through key, ignoring the values
for value in d.values(): # Iterates just through value, ignoring the keys

Maak een woordenboek uit 2 lijsten

data = dict(zip(list_with_keys, list_with_values))

Voel je vrij om meer toe te voegen!


583
2017-12-05 06:07



Ja, het is vrij eenvoudig. Doe gewoon het volgende:

dict["key"] = "value"

132
2018-06-21 22:09



"Is het mogelijk om een ​​sleutel toe te voegen aan een Python-woordenboek nadat deze is gemaakt? Het lijkt geen .add () -methode te hebben."

Ja, het is mogelijk en het heeft een methode die dit implementeert, maar u wilt het niet direct gebruiken.

Laten we, om te demonstreren hoe en hoe we het niet moeten gebruiken, een leeg dictaat maken met het letterlijke, {}:

my_dict = {}

Beste praktijk 1: onderschriftnotatie

Om dit dictaat te updaten met een enkele nieuwe sleutel en waarde, kunt u gebruiken de subscript notatie (zie Mappings hier) dat zorgt voor itemtoewijzing:

my_dict['new key'] = 'new value'

my_dict is nu:

{'new key': 'new value'}

Best Practice 2: The update methode - 2 manieren

We kunnen het dict ook met meerdere waarden efficiënt en met behulp van de update methode. We kunnen onnodig een extra creëren dict hier, dus we hopen onze dict is al gemaakt en is afkomstig van of is gebruikt voor een ander doel:

my_dict.update({'key 2': 'value 2', 'key 3': 'value 3'})

my_dict is nu:

{'key 2': 'value 2', 'key 3': 'value 3', 'new key': 'new value'}

Een andere efficiënte manier om dit te doen met de updatemethode is met trefwoordargumenten, maar aangezien het om wettige pythonwoorden moet gaan, mag je geen spaties of speciale symbolen hebben of de naam met een nummer beginnen, maar velen beschouwen dit als een leesbaardere manier om sleutels voor een dictaat te maken, en hier vermijden we zeker dat we extra onnodig maken dict:

my_dict.update(foo='bar', foo2='baz')

en my_dict is nu:

{'key 2': 'value 2', 'key 3': 'value 3', 'new key': 'new value', 
 'foo': 'bar', 'foo2': 'baz'}

Dus nu hebben we drie Pythonische manieren om a te updaten behandeld dict.


Magische methode, __setitem__en waarom het moet worden vermeden

Er is een andere manier om een ​​update uit te voeren dict die je niet zou moeten gebruiken, die de __setitem__ methode. Hier is een voorbeeld van hoe je het zou kunnen gebruiken __setitem__ methode om een ​​sleutel / waarde-paar toe te voegen aan a dicten een demonstratie van de slechte prestaties van het gebruik ervan:

>>> d = {}
>>> d.__setitem__('foo', 'bar')
>>> d
{'foo': 'bar'}


>>> def f():
...     d = {}
...     for i in xrange(100):
...         d['foo'] = i
... 
>>> def g():
...     d = {}
...     for i in xrange(100):
...         d.__setitem__('foo', i)
... 
>>> import timeit
>>> number = 100
>>> min(timeit.repeat(f, number=number))
0.0020880699157714844
>>> min(timeit.repeat(g, number=number))
0.005071878433227539

We zien dus dat het gebruik van de subscript-notatie eigenlijk veel sneller is dan het gebruik ervan __setitem__. Het doen van het Pythonic ding, dat wil zeggen, het gebruiken van de taal zoals het bedoeld was om te worden gebruikt, is meestal zowel leesbaar als rekenefficiënt.


105
2017-11-29 23:57



dictionary[key] = value

73
2018-06-21 22:08



Als u een woordenboek in een woordenboek wilt toevoegen, kunt u het op deze manier doen.

Voorbeeld: voeg een nieuw item toe aan uw woordenboek en subwoordenboek

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)

Output:

{'new key': 'some new entry', 'dictionary_within_a_dictionary': {'sub_dict': {'other': 'dictionarly'}}}

NOTITIE: Python vereist dat je eerst een sub toevoegt

dictionary["dictionary_within_a_dictionary"] = {}

voordat u items toevoegt.


44
2018-04-26 19:04