Python Dictionary

Each key is divided from its value by a colon (:), the items are separated by commas, and the entire thing is enclosed in curly braces. An empty dictionary contains no item is written with two curly braces, just like: {}.

Keys are unique within a dictionary whereas values may not be. The values of a dictionary can be of any category, but the keys must be of an immutable data type that s of strings, numbers, or tuples.

Accessing Values in Dictionary

To access dictionary elements, you can use the common square brackets along with the key to getting its value. Following is a basic illustration −

#!/usr/bin/python

dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'}
print "dict['Name']: ", dict['Name']
print "dict['Age']: ", dict['Age']

When the above code is executed, it generates the following result −

dict['Name']:  Zara
dict['Age']:  7

If we try to access a data item with a key, which is not the part of the dictionary, we obtain an error as below −

#!/usr/bin/python

dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'}
print "dict['Alice']: ", dict['Alice']

When the above code is executed, it generates the following result −

dict['Alice']:
Traceback (most recent call last):
   File "test.py", line 4, in <module>
      print "dict['Alice']: ", dict['Alice'];
KeyError: 'Alice'

Updating Dictionary

Dictionary can be updated by adding a new entry or a key-value pair, modifying an existing entry, or deleting an existing entry as shown below in the basic illustration−

#!/usr/bin/python

dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'}
dict['Age'] = 8; # update existing entry
dict['School'] = "DPS School"; # Add new entry

print "dict['Age']: ", dict['Age']
print "dict['School']: ", dict['School']

When the above code is executed, it generates the following result −

dict['Age']:  8
dict['School']:  DPS School

Delete Dictionary Elements

You can either eliminate the individual dictionary elements or clear the whole contents of a dictionary. The entire dictionary can also be deleted in a single operation.

The entire dictionary can be removed with the use of the del statement. Basic illustration for this is given below:

#!/usr/bin/python

dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'}
del dict['Name']; # remove entry with key 'Name'
dict.clear();     # remove all entries in dict
del dict ;        # delete entire dictionary

print "dict['Age']: ", dict['Age']
print "dict['School']: ", dict['School']

This generates the following result. Note that an exception is raised because after del dict dictionary does not exist anymore −

dict['Age']:
Traceback (most recent call last):
   File "test.py", line 8, in <module>
      print "dict['Age']: ", dict['Age'];
TypeError: 'type' object is unsubscriptable

Properties of Dictionary Keys:

Dictionary values have no constraints. They can be any arbitrary Python object, either standard objects or user-defined objects. Yet, the same is not true for the keys.

There are two important points to remember about dictionary keys explained as below −

(a) More than one entry per key not permitted. This implies that no duplicate key is allowed. When duplicate keys encountered during the assignment, the final assignment wins. For instance:

#!/usr/bin/python

dict = {'Name': 'Zara', 'Age': 7, 'Name': 'Manni'}
print "dict['Name']: ", dict['Name']

When the above code is executed, it generates the following result −

dict['Name']:  Manni

(b) Keys must be immutable means strings, numbers or tuples can be used as dictionary keys but something like ['key'] is not permitted. For instance:

#!/usr/bin/python

dict = {['Name']: 'Zara', 'Age': 7}
print "dict['Name']: ", dict['Name']

When the above code is executed, it generates the following result −

Traceback (most recent call last):
   File "test.py", line 3, in <module>
      dict = {['Name']: 'Zara', 'Age': 7};
TypeError: unhashable type: 'list'

Built-in Dictionary Functions & Methods

Python involves various dictionary functions described as follows −

Sr.No. Function with Explanation
1 cmp(dict1, dict2)

Compares elements of both the dict.

2 len(dict)

Provides the total length of the dictionary. This would be equal to the total number of items present in the dictionary.

3 str(dict)

Develops a printable string representation of a dictionary

4 type(variable)

Returns the type of the passed variable. If the passed variable is a dictionary, then it would return a dictionary type.

Python involves several dictionary methods explained as below −

Sr.No. Methods with Explanation
1 dict.clear()

Eliminate all elements of dictionary dict

2 dict.copy()

Returns a shallow copy of dictionary dict

3 dict.fromkeys()

Generate a new dictionary with keys from seq and values set to value.

4 dict.get(key, default=None)

For key key, returns value or default if key not in dictionary

5 dict.has_key(key)

Returns true if key in dictionary dict, otherwise false

6 dict.items()

Returns a list of dict's (key, value) tuple pairs

7 dict.keys()

Returns list of dictionary dict's keys

8 dict.setdefault(key, default=None)

Just like get(), but will set dict[key]=default if key is not already in dict

9 dict.update(dict2)

Adds dictionary dict2's key-values pairs to dict

10 dict.values()

Returns list of dictionary dict's values