Keys for dictionaries have to be immutable types. This is to ensure that the key can be converted to a constant hash value for quick look-ups. Immutable types include integer, floats, strings, tuples.
empty_dict = {}
person = {'name': 'Alex', 'age': 35, 'pets': ['cat', 'dog'], 7: 'Seven'}
print(person['name']) # Alex (will throw an error if does not exist)
print(person[7]) # Seven
print(person.get('name')) # Alex
print(person.get('phone')) # None (does not throw a KeyError error)
print(person.get('phone', '911')) # 911 (return a default value if does not exist)
person['phone'] = '555-7777'
print('Update dict:')
person.update({'name': 'Lisa', 'email': 't@t.com'})
print(person['name']) # Lisa
print('Remove key and its value in the dict:')
phone = person.pop('phone')
print(phone) # 555-7777
print(person.get('phone')) # None
print('Delete key and its value in the dict:')
del person[7]
del person['pets']
print(person) # {'name': 'Lisa', 'age': 35, 'email': 't@t.com'}
print('Get number of keys in the dict:')
print(len(person)) # 3
print('Get list of keys and list of values:')
print(list(person.keys())) # ['name', 'age', 'email']
print(list(person.values())) # ['Lisa', 35, 't@t.com']
print(person.items()) # dict_items([('name', 'Lisa'), ('age', 35), ('email', 't@t.com')])
print('Loop thru keys in the dict:')
for key in person:
print(key)
print('Loop thru keys and values in the dict:')
for key, value in person.items():
print(key, value)
print('Check if key exist in the dict:')
print('name' in person) # True
print('Set key-value if it does not exist yet:')
person.setdefault('country', 'Canada')
print(person.get('country')) # Canada
person.setdefault('country', 'France')
print(person.get('country')) # Canada
Dictionary comprehension
names = ['Bruce Wayne','Peter Parker', 'Wade Wilson']
heroes = ['Batman', 'Spiderman', 'Deadpool']
# create dictionary using dictionary comprehension
my_dict = {name: hero for name, hero in zip(names, heroes)}
print(my_dict) # {'Bruce Wayne': 'Batman', 'Peter Parker': 'Spiderman', 'Wade Wilson': 'Deadpool'}
# create dictionary using dictionary comprehension with if condition
my_dict2 = {name: hero for name, hero in zip(names, heroes) if hero!='Deadpool'}
print(my_dict2) # {'Bruce Wayne': 'Batman', 'Peter Parker': 'Spiderman'}