Skip to main content

Dictionaries

Updated Oct 28, 2019 ·

Overview

Dictionaries are used to store related data as key and value pairs. They map a key to a value. The key is usually a string or number, and the value can be any data type.

You can create dictionaries using braces or the dict() function:

animals = {"bears": 10, "lions": 1, "tigers": 2}  

You can use keys to access values:

animals["bears"]        ## This will return 10  

To check for a key's existence, use in:

if "bears" in animals  

To add or modify elements:

animals["zebras"] = 2     ## This adds a new pair

To remove a key-value pair:

del animals["lions"]     ## Deletes the entry for "lions"

From a List of Tuples

Sometimes data comes as pairs in a list. You can turn it into a dictionary to access items faster. One item becomes the key, the other becomes the value.

  • Use a loop to assign each pair to a dictionary
  • Keys must be unique; values can repeat

For example, a list books that contains sci-fi books with their publication years can be converted into a dictionary:

books = [
("Dune", 1965),
("Neuromancer", 1984),
("Foundation", 1951)
]

book_dict = {}

for title, year in books:
book_dict[title] = year

print(book_dict)

Output:

{
'Dune': 1965,
'Neuromancer': 1984,
'Foundation': 1951
}

Iterate and Sort

When looping over a dictionary, Python works with keys by default. We can use a for loop and apply sorted() to iterate through the keys in order.

for title in sorted(book_dict):
print(title)

Output:

Dune
Foundation
Neuromancer

Safely Access Values with get()

We can use the get() method to safely access keys. If a key is missing, it returns a None and prevents the program from crashing.

Example:

print(book_dict.get("Hyperion", "Not Found"))
print(book_dict.get("Dune", "Not Found"))

Output:

Not Found
1965

Add Data with update()

You can add single or multiple items to a dictionary using update(). It is useful for adding several entries at once or grouping related items.

Example with book_locations storing sci-fi books by shelf:

book_locations = {
"Shelf A": {
"Dune": "Top Row"
}
}

book_locations["Shelf B"] = {
"Neuromancer": "Middle Row"
}

print(book_locations)

Output:

{
'Shelf A': {'Dune': 'Top Row'},
'Shelf B': {'Neuromancer': 'Middle Row'}
}

You can also use update() to add several values at once or to group related data under one key.

Here, multiple books under one shelf:

new_books = [
("Foundation", "Bottom Row"),
("Hyperion", "Top Row")
]

book_locations["Shelf A"].update(new_books)

print(book_locations["Shelf A"])

Output:

{
'Dune': 'Top Row',
'Foundation': 'Bottom Row',
'Hyperion': 'Top Row'
}

Remove Items with del and pop

You can remove items safely using the following options:

  • del is for keys you know exist
  • pop() is safer if the key may not exist

Example removing books from book_locations:

del book_locations["Shelf B"]

removed = book_locations["Shelf A"].pop("Nonexistent Book", None)

print(removed)

Output:

None

Common Dictionary Methods

MethodDescription
len(dictionary)Returns the number of items in the dictionary
dictionary[key]Accesses the item with key key
dictionary[key] = valueSets the value associated with key
del dictionary[key]Removes the item with key key
dictionary.get(key, default)Returns the element for key, or default if it's not present
dictionary.keys()Returns a sequence of the keys in the dictionary
dictionary.values()Returns a sequence of the values in the dictionary
dictionary.update(other_dictionary)Updates with items from another dictionary
dictionary.clear()Removes all items from the dictionary

More Pythonic Ways

Python has simpler and cleaner ways to work with dictionaries. These methods let you loop, check, and access data efficiently.

  • Use items() to get key/value pairs directly
  • Use tuple unpacking to separate keys and values in a loop
  • Use in to check if a key exists

In the example below, book_dict stores sci-fi books with their authors. We loop through book_dict using items() and unpack the title and author.

book_dict = {
"Dune": "Frank Herbert",
"Neuromancer": "William Gibson",
"Foundation": "Isaac Asimov"
}

for title, author in book_dict.items():
print(f"{title} by {author}")

Output:

Dune by Frank Herbert
Neuromancer by William Gibson
Foundation by Isaac Asimov

You can ALSO check if a key is in a dictionary using in. This returns True or False and works well with if/else conditions.

Example checking book_dict for certain books:

if "Hyperion" in book_dict:
print("Hyperion is in the collection")
else:
print("Hyperion not found")

if "Dune" in book_dict:
print(f"Dune found, author is {book_dict['Dune']}")

Output:

Hyperion not found
Dune found, author is Frank Herbert