Dictionary
Dictionary
In [1]: thisdict = {
"brand": "Ford",
"model": "Mustang",
"year": 1964
}
A dictionary is a collection which is ordered*, changeable and do not allow duplicates. As of Python version 3.7, dictionaries are ordered. In Python 3.6
and earlier, dictionaries are unordered.
Dictionaries are written with curly brackets, and have keys and values:
In [2]: thisdict = {
"brand": "Ford",
"model": "Mustang",
"year": 1964
}
print(thisdict)
Dictionary Items Dictionary items are ordered, changeable, and do not allow duplicates.
Dictionary items are presented in key:value pairs, and can be referred to by using the key name.
In [3]:
thisdict = {
"brand": "Ford",
"model": "Mustang",
"year": 1964
}
print(thisdict["brand"])
Ford
Ordered or Unordered?
When we say that dictionaries are ordered, it means that the items have a defined order, and that order will not change.
Unordered means that the items do not have a defined order, you cannot refer to an item by using an index.
Changeable
Dictionaries are changeable, meaning that we can change, add or remove items after the dictionary has been created.
In [4]: thisdict = {
"brand": "Ford",
"model": "Mustang",
"year": 1964,
"year": 2020
}
print(thisdict)
Dictionary Length
To determine how many items a dictionary has, use the len() function:
In [6]:
thisdict = {
"brand": "Ford",
"model": "Mustang",
"year": 1964
}
print(len(thisdict))
Dictionary Items - Data Types The values in dictionary items can be of any data type:
In [13]:
thisdict = {
"brand": "Ford",
"electric": False,
"year": 1964,
"colors": ["red", "white", "blue"]
}
print(type("thisdict"))
print(type("ford"))
print(type(False))
print(type(1964))
print(type(["red", "white", "blue"]))
<class 'str'>
<class 'str'>
<class 'bool'>
<class 'int'>
<class 'list'>
The dict() Constructor It is also possible to use the dict() constructor to make a dictionary.
In [14]:
thisdict = dict(name = "John", age = 36, country = "Norway")
print(thisdict)
Accessing Items You can access the items of a dictionary by referring to its key name, inside square brackets:
In [16]:
thisdict = {
"brand": "Ford",
"model": "Mustang",
"year": 1964
}
x = thisdict["model"]
print(x)
Mustang
There is also a method called get() that will give you the same result:
In [17]: thisdict = {
"brand": "Ford",
"model": "Mustang",
"year": 1964
}
x = thisdict.get("model")
print(x)
Mustang
Get Keys The keys() method will return a list of all the keys in the dictionary.
In [18]:
thisdict = {
"brand": "Ford",
"model": "Mustang",
"year": 1964
}
x = thisdict.keys()
print(x)
The list of the keys is a view of the dictionary, meaning that any changes done to the dictionary will be reflected in the keys list.
Example Add a new item to the original dictionary, and see that the keys list gets updated as well:
In [19]:
car = {
"brand": "Ford",
"model": "Mustang",
"year": 1964
}
x = car.keys()
car["color"] = "white"
Get Values The values() method will return a list of all the values in the dictionary.
In [20]:
thisdict = {
"brand": "Ford",
"model": "Mustang",
"year": 1964
}
x = thisdict.values()
print(x)
The list of the values is a view of the dictionary, meaning that any changes done to the dictionary will be reflected in the values list.
Example Make a change in the original dictionary, and see that the values list gets updated as well:
In [21]: car = {
"brand": "Ford",
"model": "Mustang",
"year": 1964
}
x = car.values()
car["year"] = 2020
Example Add a new item to the original dictionary, and see that the values list gets updated as well:
In [22]:
car = {
"brand": "Ford",
"model": "Mustang",
"year": 1964
}
x = car.values()
car["color"] = "red"
Get Items The items() method will return each item in a dictionary, as tuples in a list.
In [23]:
thisdict = {
"brand": "Ford",
"model": "Mustang",
"year": 1964
}
x = thisdict.items()
print(x)
The returned list is a view of the items of the dictionary, meaning that any changes done to the dictionary will be reflected in the items list.
Example Make a change in the original dictionary, and see that the items list gets updated as well:
In [24]:
car = {
"brand": "Ford",
"model": "Mustang",
"year": 1964
}
x = car.items()
car["year"] = 2020
Example Add a new item to the original dictionary, and see that the items list gets updated as well:
In [25]:
car = {
"brand": "Ford",
"model": "Mustang",
"year": 1964
}
x = car.items()
car["color"] = "red"
Check if Key Exists To determine if a specified key is present in a dictionary use the in keyword:
In [26]:
thisdict = {
"brand": "Ford",
"model": "Mustang",
"year": 1964
}
if "model" in thisdict:
print("Yes, 'model' is one of the keys in the thisdict dictionary")
Change Values You can change the value of a specific item by referring to its key name:
In [29]:
thisdict = {
"brand": "Ford",
"model": "Mustang",
"year": 1964
}
thisdict["year"] = 2018
print(thisdict)
Update Dictionary The update() method will update the dictionary with the items from the given argument.
In [30]:
thisdict = {
"brand": "Ford",
"model": "Mustang",
"year": 1964
}
thisdict.update({"year": 2020})
print(thisdict)
Adding Items Adding an item to the dictionary is done by using a new index key and assigning a value to it:
In [31]:
thisdict = {
"brand": "Ford",
"model": "Mustang",
"year": 1964
}
thisdict["color"] = "red"
print(thisdict)
Update Dictionary The update() method will update the dictionary with the items from a given argument. If the item does not exist, the item will be
added.
Example Add a color item to the dictionary by using the update() method:
In [32]:
thisdict = {
"brand": "Ford",
"model": "Mustang",
"year": 1964
}
thisdict.update({"color": "red"})
print(thisdict)
Removing Items There are several methods to remove items from a dictionary:
Example The pop() method removes the item with the specified key name:
In [33]:
thisdict = {
"brand": "Ford",
"model": "Mustang",
"year": 1964
}
thisdict.pop("model")
print(thisdict)
Example The popitem() method removes the last inserted item (in versions before 3.7, a random item is removed instead):
In [34]:
thisdict = {
"brand": "Ford",
"model": "Mustang",
"year": 1964
}
thisdict.popitem()
print(thisdict)
Example The del keyword removes the item with the specified key name:
In [35]:
thisdict = {
"brand": "Ford",
"model": "Mustang",
"year": 1964
}
del thisdict["model"]
print(thisdict)
In [36]: thisdict = {
"brand": "Ford",
"model": "Mustang",
"year": 1964
}
del thisdict
print(thisdict) #this will cause an error because "thisdict" no longer exists.
In [37]: thisdict = {
"brand": "Ford",
"model": "Mustang",
"year": 1964
}
thisdict.clear()
print(thisdict)
{}
Loop Through a Dictionary You can loop through a dictionary by using a for loop.
When looping through a dictionary, the return value are the keys of the dictionary, but there are methods to return the values as well.
In [43]:
hisdict = {
"brand": "Ford",
"model": "Mustang",
"year": 1964
}
for x in thisdict:
print(x)
brand
model
year
Example You can use the keys() method to return the keys of a dictionary:
In [44]:
thisdict = {
"brand": "Ford",
"model": "Mustang",
"year": 1964
}
for x in thisdict.keys():
print(x)
brand
model
year
In [39]:
thisdict = {
"brand": "Ford",
"model": "Mustang",
"year": 1964
}
for x in thisdict:
print(thisdict[x])
Ford
Mustang
1964
Example You can also use the values() method to return values of a dictionary:
In [42]:
thisdict = {
"brand": "Ford",
"model": "Mustang",
"year": 1964
}
for x in thisdict.values():
print(x)
Ford
Mustang
1964
Example Loop through both keys and values, by using the items() method:
In [ ]:
thisdict = {
"brand": "Ford",
"model": "Mustang",
"year": 1964
}
for x, y in thisdict.items():
print(x, y)
Copy a Dictionary You cannot copy a dictionary simply by typing dict2 = dict1, because: dict2 will only be a reference to dict1, and changes made in
dict1 will automatically also be made in dict2.
There are ways to make a copy, one way is to use the built-in Dictionary method copy().
In [ ]: Example
Make a copy of a dictionary with the copy() method:
In [45]:
thisdict = {
"brand": "Ford",
"model": "Mustang",
"year": 1964
}
mydict = thisdict.copy()
print(mydict)
In [46]:
thisdict = {
"brand": "Ford",
"model": "Mustang",
"year": 1964
}
mydict = dict(thisdict)
print(mydict)
Nested Dictionaries A dictionary can contain dictionaries, this is called nested dictionaries.
In [47]:
myfamily = {
"child1" : {
"name" : "Emil",
"year" : 2004
},
"child2" : {
"name" : "Tobias",
"year" : 2007
},
"child3" : {
"name" : "Linus",
"year" : 2011
}
}
print(myfamily)
{'child1': {'name': 'Emil', 'year': 2004}, 'child2': {'name': 'Tobias', 'year': 2007}, 'child3': {'name': 'Linus', 'year': 2011}}
Or, if you want to add three dictionaries into a new dictionary:
Example Create three dictionaries, then create one dictionary that will contain the other three dictionaries:
In [48]:
child1 = {
"name" : "Emil",
"year" : 2004
}
child2 = {
"name" : "Tobias",
"year" : 2007
}
child3 = {
"name" : "Linus",
"year" : 2011
}
myfamily = {
"child1" : child1,
"child2" : child2,
"child3" : child3
}
print(myfamily)
{'child1': {'name': 'Emil', 'year': 2004}, 'child2': {'name': 'Tobias', 'year': 2007}, 'child3': {'name': 'Linus', 'year': 2011}}
Access Items in Nested Dictionaries To access items from a nested dictionary, you use the name of the dictionaries, starting with the outer dictionary:
In [49]:
myfamily = {
"child1" : {
"name" : "Emil",
"year" : 2004
},
"child2" : {
"name" : "Tobias",
"year" : 2007
},
"child3" : {
"name" : "Linus",
"year" : 2011
}
}
print(myfamily["child2"]["name"])
Tobias
Loop Through Nested Dictionaries You can loop through a dictionary by using the items() method like this:
Example Loop through the keys and values of all nested dictionaries:
In [1]: myfamily = {
"child1": {
"name": "Emil",
"year": 2004
},
"child2": {
"name": "Tobias",
"year": 2007
},
"child3": {
"name": "Linus",
"year": 2011
}
}
child1
name: Emil
year: 2004
child2
name: Tobias
year: 2007
child3
name: Linus
year: 2011
Dictionary Methods Python has a set of built-in methods that you can use on dictionaries.
Method Description
clear() Removes all the elements from the dictionary
copy() Returns a copy of the dictionary
fromkeys() Returns a dictionary with the specified keys and value
get() Returns the value of the specified key
items() Returns a list containing a tuple for each key value pair
keys() Returns a list containing the dictionary's keys
pop() Removes the element with the specified key
popitem() Removes the last inserted key-value pair
setdefault() Returns the value of the specified key. If the key does not exist: insert the key, with the specified value
update() Updates the dictionary with the specified key-value pairs
values() Returns a list of all the values in the dictionary