Python’s built-in dictionary data type provides associative array functionality implemented using hash tables. The built-in len function returns the number of key-value pairs in a dictionary. The del statement can be used to delete a key-value pair. As with Lists , several dictionary methods (clear, copy, get, items, keys, update and values) are available.

>>> x = {1: "eins", 2: "zwei"}
>>> x[3] = "drei"
>>> x["viertes"] = "vier"
>>> list(x.keys())
[1, 2, 3, 'viertes']
>>> x[1]
>>> x.get(1, "nicht vorhanden")
>>> x.get(5, "nicht vorhanden")
'nicht vorhanden'

Keys must be of immutable type, including Numbers, Strings and Tuples.


Even if you can use different key types in a dictionary, you should avoid this, as it not only makes it more difficult to read, but also sorting is also made more difficult.

Values can be any type of object, including mutable types such as Lists and Dictionaries. If you try to access the value of a key that is not in the dictionary, a KeyError exception is thrown. To avoid this error, the dictionary method get optionally returns a custom value if a key is not contained in a dictionary.


setdefault can be used to provide counters for the keys of a dict, for example:

>>> titles = ["Data types", "Lists", "Sets", "Lists"]
>>> for title in titles:
...     titles_count.setdefault(title, 0)
...     titles_count[title] += 1
>>> titles_count
{'Data types': 1, 'Lists': 2, 'Sets': 1}


Such counting operations quickly became widespread, so the collections.Counter class was later added to the Python standard library. This class can perform the above-mentioned operations much more easily:

>>> collections.Counter(titles)
Counter({'Lists': 2, 'Data types': 1, 'Sets': 1})

Merging dictionaries#

You can merge two dictionaries into a single dictionary using the dict.update() method:

>>> titles = {7.0: "Data Types", 7.1: "Lists", 7.2: "Tuples"}
>>> new_titles = {7.0: "Data types", 7.3: "Sets"}
>>> titles.update(new_titles)
>>> titles
{7.0: 'Data types', 7.1: 'Lists', 7.2: 'Tuples', 7.3: 'Sets'}


The order of the operands is important, as 7.0 is duplicated and the value of the last key overwrites the previous one.



dict subclass with keylist/keypath/keyattr support and I/O shortcuts.


can convert Dicts into Series and DataFrames.