Dictionaries
Dictionaries are sometimes found in other languages as “associative memories” or “associative arrays”. Unlike sequences, which are indexed by a range of numbers, dictionaries are indexed by keys, which can be any immutable type; strings and numbers can always be keys
It is best to think of a dictionary as an unordered set of key: value pairs, with the requirement that the keys are unique (within one dictionary).
Creating a dictionary
Creating a dictionary is as simple as placing items inside curly braces {}
separated by comma.
# empty dictionary
myDict = {}
print (myDict)
# dictionary with integer keys
myDict = {1: 'apple', 2: 'ball'}
print( myDict)
# dictionary with mixed keys
myDict = {'name': 'John', 1: [2, 4, 3]}
print (myDict)
# using dict()
myDict = dict({1:'apple', 2:'ball'})
print (myDict)
# from sequence having each item as a pair
myDict = dict([(1,'apple'), (2,'ball')])
print (myDict)
{}
{1: 'apple', 2: 'ball'}
{1: [2, 4, 3], 'name': 'John'}
{1: 'apple', 2: 'ball'}
{1: 'apple', 2: 'ball'}
Accessing Elements
While indexing is used with other container types to access values, dictionary uses keys. Key can be used either inside square brackets or with the
get()
method.The difference while using
get()
is that it returnsNone
instead ofKeyError
, if the key is not found.
myDict = {'name':'Jack', 'age': 26}
# Output: Jack
print (myDict['name'])
# Output: 26
print (myDict.get('age'))
# Trying to access keys which doesn't exist returns None
print (myDict.get('address'))
# Trying to access keys which doesn't exist throws KeyError
# print myDict['address']
Jack
26
None
Change or Add Elements
Dictionaries are mutable. We can add new items or change the value of existing items using assignment operator.
If the key is already present, value gets updated, else a new key: value pair is added to the dictionary.
myDict = {'name':'Jack', 'age': 26}
print (myDict)
# update value
myDict['age'] = 27
print (myDict)
# add item
myDict['address'] = 'Downtown'
print (myDict)
{'age': 26, 'name': 'Jack'}
{'age': 27, 'name': 'Jack'}
{'age': 27, 'name': 'Jack', 'address': 'Downtown'}
Delete Elements
We can remove a particular item in a dictionary by using the method pop(). This method removes as item with the provided key and returns the value.
The method, popitem() can be used to remove and return an arbitrary item (key, value) form the dictionary. All the items can be removed at once using the clear() method.
We can also use the del keyword to remove individual items or the entire dictionary itself.
# create a dictionary
squares = {1:1, 2:4, 3:9, 4:16, 5:25}
# remove a particular item
print (squares.pop(4))
print (squares)
# remove an arbitrary item
print (squares.popitem())
print (squares)
# delete a particular item
del squares[5]
print (squares)
# remove all items
squares.clear()
print (squares)
# delete the dictionary itself
del squares
# Throws Error
# print squares
16
{1: 1, 2: 4, 3: 9, 5: 25}
(1, 1)
{2: 4, 3: 9, 5: 25}
{2: 4, 3: 9}
{}
Traversing a Dictionary
Let us visit each element of the dictionary to display its values on screen. This can be done by using a for
loop.
ageDict = {'Tim': 18,'Charlie':12,'Tiffany':22,'Robert':25}
for i in ageDict:
print i, ':', ageDict[i]
Tim : 18
Tiffany : 22
Robert : 25
Charlie : 12
Merging Dictionaries
Two dictionaries can be merged in to one by using update()
method. It merges the keys and values of one dictionary into another and overwrites values of the same key.
dict = {'Name': 'Zara', 'Age': 7}
dict2 = {'Sex': 'female' }
dict.update(dict2)
print( dict)
{'Name': 'Zara', 'Age': 7, 'Sex': 'female'}
Other Dictionary Methods
len(s)
This method returns number of key-value pairs in the given dictionary.
myDict = {'sun': 'Sunday', 'mon': 'Monday', 'tue': 'Tuesday', 'wed': 'Wednesday', 'thu': 'Thursday', 'fri': 'Friday',
'sat': 'Saturday'}
print (len(myDict))
7
dict.clear()
It removes all items from the particular dictionary.
myDict = {'sun': 'Sunday', 'mon': 'Monday', 'tue': 'Tuesday', 'wed': 'Wednesday', 'thu': 'Thursday', 'fri': 'Friday',
'sat': 'Saturday'}
print (myDict)
myDict.clear()
print (myDict)
{'wed': 'Wednesday', 'sun': 'Sunday', 'thu': 'Thursday', 'tue': 'Tuesday', 'mon': 'Monday', 'fri': 'Friday', 'sat': 'Saturday'}
{}
dict.get(key[, value])
Return the value for key
if key
is in the dictionary, else default. If default is not given, it defaults to None
, so that this method never raises a KeyError
.
person = {'name': 'Phill', 'age': 22}
print ('Name:', person.get('name'))
print ('Age:', person.get('age'))
# value is not provided
print ('Salary:', person.get('salary'))
# value is provided
print ('Salary:', person.get('salary', 0.0))
Name: Phill
Age: 22
Salary: None
Salary: 0.0
dict.has_key(key)
This function returns ‘True’, if dictionary has a key, otherwise it returns ‘False’.
myDict = {'sun': 'Sunday', 'mon': 'Monday', 'tue': 'Tuesday', 'wed': 'Wednesday', 'thu': 'Thursday', 'fri': 'Friday',
'sat': 'Saturday'}
print (myDict.has_key('fri'))
print (myDict.has_key('aaa'))
True
False
dict.items()
Return a copy of the dictionary’s list of (key, value)
pairs.
myDict = {'sun': 'Sunday', 'mon': 'Monday', 'tue': 'Tuesday', 'wed': 'Wednesday', 'thu': 'Thursday', 'fri': 'Friday',
'sat': 'Saturday'}
print (myDict.items())
[('wed', 'Wednesday'), ('sun', 'Sunday'), ('thu', 'Thursday'), ('tue', 'Tuesday'), ('mon', 'Monday'), ('fri', 'Friday'), ('sat', 'Saturday')]
dict.keys()
Return a copy of the dictionary’s list of keys.
myDict = {'sun': 'Sunday', 'mon': 'Monday', 'tue': 'Tuesday', 'wed': 'Wednesday', 'thu': 'Thursday', 'fri': 'Friday',
'sat': 'Saturday'}
print (myDict.keys())
['wed', 'sun', 'thu', 'tue', 'mon', 'fri', 'sat']
dict.values()
Return a copy of the dictionary’s list of values.
myDict = {'sun': 'Sunday', 'mon': 'Monday', 'tue': 'Tuesday', 'wed': 'Wednesday', 'thu': 'Thursday', 'fri': 'Friday',
'sat': 'Saturday'}
print (myDict.values())
['Wednesday', 'Sunday', 'Thursday', 'Tuesday', 'Monday', 'Friday', 'Saturday']
Last updated
Was this helpful?