Dictionaries
A python dictionary stores information as key-value pairs. When a key is provided Python returns the value associated with the key. The keys are unique. A dictionary doesn’t guarantee the order of elements.
Convert two lists into a dictionary (with zip)
keys = ['a', 'b', 'c']
values = [1, 2, 3]
dct = dict(zip(keys, values))
>>> dct
{'a': 1, 'b': 2, 'c': 3}
Convert two lists into a dictionary (with dict comprehension)
keys = ['a', 'b', 'c']
values = [1, 2, 3]
dct = {keys[i]: values[i] for i in range(len(keys))}
>>> dct
{'a': 1, 'b': 2, 'c': 3}
Looping through all key-value pairs
dct = {'key1': 'val1', 'key2': 'val2'}
for key, value in dct.items():
print(key, value)
# Output
key1 val1
key2 val2
Looping through all the keys
dct = {'key1': 'val1', 'key2': 'val2'}
for key in dct.keys():
print(key, dct[key])
# Output
key1 val1
key2 val2
Looping through all the values
dct = {'key1': 'val1', 'key2': 'val2'}
for value in dct.values():
print(value)
# Output
val1
val2
Removing key-value pair
# remove the element with key `key` of dictionary `dct`
del dct['key']
Merging two dictionaries
# in Python 3.5+ (using double asterisk operator **)
x = {'a': 1, 'b': 2}
y = {'b': 3, 'c': 4}
# merge into new dictionary `z`
z = {**x, **y}
>>> z
{'a': 1, 'b': 3, 'c': 4}
# older Python versions
x = {'a': 1, 'b': 2}
y = {'b': 3, 'c': 4}
# merge into new dictionary `z`
z = x.copy()
z.update(y)
>>> z
{'a': 1, 'b': 3, 'c': 4}
Dictionary comprehension
# create a new dict switching keys and values
# of existing dictionary `dct`
{v: k for (k, v) in dct.items()}
# same with
new_dct = {}
for k, v in dct.items():
new_dct[v] = k
Update a dictionary’s keys with comprehension
dct = {1: 'a', 2: 'b', 3: 'c'}
# create a new dictionary with updated keys
new_dct = {k*5: v for (k, v) in dct.items()}
>>> new_dct
{5: 'a', 10: 'b', 15: 'c'}