How can I add new keys to a dictionary?
You create a new key/value pair on a dictionary by assigning a value to that key
d = {'key': 'value'}print(d) # {'key': 'value'}d['mynewkey'] = 'mynewvalue'print(d) # {'key': 'value', 'mynewkey': 'mynewvalue'}
If the key doesn't exist, it's added and points to that value. If it exists, the current value it points to is overwritten.
To add multiple keys simultaneously, use dict.update()
:
>>> x = {1:2}>>> print(x){1: 2}>>> d = {3:4, 5:6, 7:8}>>> x.update(d)>>> print(x){1: 2, 3: 4, 5: 6, 7: 8}
For adding a single key, the accepted answer has less computational overhead.
I feel like consolidating info about Python dictionaries:
Creating an empty dictionary
data = {}# ORdata = dict()
Creating a dictionary with initial values
data = {'a': 1, 'b': 2, 'c': 3}# ORdata = dict(a=1, b=2, c=3)# ORdata = {k: v for k, v in (('a', 1), ('b',2), ('c',3))}
Inserting/Updating a single value
data['a'] = 1 # Updates if 'a' exists, else adds 'a'# ORdata.update({'a': 1})# ORdata.update(dict(a=1))# ORdata.update(a=1)
Inserting/Updating multiple values
data.update({'c':3,'d':4}) # Updates 'c' and adds 'd'
Python 3.9+:
The update operator |=
now works for dictionaries:
data |= {'c':3,'d':4}
Creating a merged dictionary without modifying originals
data3 = {}data3.update(data) # Modifies data3, not datadata3.update(data2) # Modifies data3, not data2
Python 3.5+:
This uses a new feature called dictionary unpacking.
data = {**data1, **data2, **data3}
Python 3.9+:
The merge operator |
now works for dictionaries:
data = data1 | {'c':3,'d':4}
Deleting items in dictionary
del data[key] # Removes specific element in a dictionarydata.pop(key) # Removes the key & returns the valuedata.clear() # Clears entire dictionary
Check if a key is already in dictionary
key in data
Iterate through pairs in a dictionary
for key in data: # Iterates just through the keys, ignoring the valuesfor key, value in d.items(): # Iterates through the pairsfor key in d.keys(): # Iterates just through key, ignoring the valuesfor value in d.values(): # Iterates just through value, ignoring the keys
Create a dictionary from two lists
data = dict(zip(list_with_keys, list_with_values))