Home > Dive Into Python > Getting To Know Python > Dictionaries 101 | << >> | ||||
diveintopython.org Python for experienced programmers |
A short digression is in order, because you need to know about dictionaries, tuples, and lists (oh my!). If you're a Perl hacker, you can probably skim the bits about dictionaries and lists, but you should still pay attention to tuples.
One of Python's built-in datatypes is the dictionary, which defines one-to-one relationships between keys and values.
![]() | |
A dictionary in Python is like a hash in Perl. In Perl, variables which store hashes always start with a % character; in Python, variables can be named anything, and Python keeps track of the datatype internally. |
![]() | |
A dictionary in Python is like an instance of the Hashtable class in Java. |
![]() | |
A dictionary in Python is like an instance of the Scripting.Dictionary object in Visual Basic. |
Example 1.9. Defining a dictionary
>>> d = {"server":"mpilgrim", "database":"master"}>>> d {'server': 'mpilgrim', 'database': 'master'} >>> d["server"]
'mpilgrim' >>> d["database"]
'master' >>> d["mpilgrim"]
Traceback (innermost last): File "<interactive input>", line 1, in ? KeyError: mpilgrim
Example 1.10. Modifying a dictionary
>>> d {'server': 'mpilgrim', 'database': 'master'} >>> d["database"] = "pubs">>> d {'server': 'mpilgrim', 'database': 'pubs'} >>> d["uid"] = "sa"
>>> d {'server': 'mpilgrim', 'uid': 'sa', 'database': 'pubs'}
Note that the new element (key uid, value sa) appears to be in the middle. In fact, it was just a coincidence that the elements appeared to be in order in the first example; it is just as much a coincidence that they appear to be out of order now.
![]() | |
Dictionaries have no concept of order among elements. It is incorrect to say that the elements are “out of order”; they are simply unordered. This is an important distinction which will annoy you when you want to access the elements of a dictionary in a specific, repeatable order (like alphabetical order by key). There are ways of doing this, they're just not built into the dictionary. |
Example 1.11. Mixing datatypes in a dictionary
>>> d {'server': 'mpilgrim', 'uid': 'sa', 'database': 'pubs'} >>> d["retrycount"] = 3>>> d {'server': 'mpilgrim', 'uid': 'sa', 'database': 'master', 'retrycount': 3} >>> d[42] = "douglas"
>>> d {'server': 'mpilgrim', 'uid': 'sa', 'database': 'master', 42: 'douglas', 'retrycount': 3}
Example 1.12. Deleting items from a dictionary
>>> d {'server': 'mpilgrim', 'uid': 'sa', 'database': 'master', 42: 'douglas', 'retrycount': 3} >>> del d[42]>>> d {'server': 'mpilgrim', 'uid': 'sa', 'database': 'master', 'retrycount': 3} >>> d.clear()
>>> d {}
Example 1.13. Strings are case-sensitive
>>> d = {} >>> d["key"] = "value" >>> d["key"] = "other value">>> d {'key': 'other value'} >>> d["Key"] = "third value"
>>> d {'Key': 'third value', 'key': 'other value'}
Further reading
Testing modules | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | Lists 101 |