Creating a Dictionary with Comprehension in Python


As you've probably come to learn with Python, there are quite a few ways to do an operation, some methods being better than others. One of the features that contribute to its power is the ability to create dictionaries using dictionary comprehension. This Byte will introduce you to this concept and demonstrate how it can make your code more efficient and readable.

Why Use Dictionary Comprehension?

Dictionary comprehension is a concise and memory-efficient way to create and populate dictionaries in Python. It follows the principle of "Do more with less code". It's not just about writing less code, it's also about making the code more readable and easier to understand.

Consider a scenario where you need to create a dictionary from a list. Without dictionary comprehension, you would need to create an empty dictionary and then use a for loop to add elements to it. With dictionary comprehension, you can do this in a single line of code, as we'll see later.

Intro to List Comprehension

Before we dive into dictionary comprehension, let's first understand list comprehension. List comprehension is a syntactic construct available in Python for creating a list from existing lists. It follows the form of the mathematical set-builder notation (set comprehension).

Here's an example:

# Without list comprehension
numbers = [1, 2, 3, 4, 5]
squares = []
for n in numbers:
print(squares)  # [1, 4, 9, 16, 25]

# With list comprehension
numbers = [1, 2, 3, 4, 5]
squares = [n**2 for n in numbers]
print(squares)  # [1, 4, 9, 16, 25]

As you can see, list comprehension allows you to create lists in a very concise way.

Link: For a deeper dive into list comprehension, check out our guide, List Comprehensions in Python.

Converting List Comprehension to Dictionary Comprehension

Now that you understand list comprehension, converting it to dictionary comprehension is pretty straightforward. The main difference is that while list comprehension outputs a list, dictionary comprehension outputs a dictionary, obviously šŸ˜‰.

To convert a list comprehension to a dictionary comprehension, you need to change the brackets [] to braces {}, and add a key before the colon :.

Let's see what this would look like:

# List comprehension
numbers = [1, 2, 3, 4, 5]
squares = [n**2 for n in numbers]
print(squares)  # [1, 4, 9, 16, 25]

# Dictionary comprehension
numbers = [1, 2, 3, 4, 5]
squares = {n: n**2 for n in numbers}
print(squares)  # {1: 1, 2: 4, 3: 9, 4: 16, 5: 25}
Get free courses, guided projects, and more

No spam ever. Unsubscribe anytime. Read our Privacy Policy.

In the dictionary comprehension, n is the key and n**2 is the value. The comprehension iterates over the numbers list, assigns each number to n, and then adds n as a key and n**2 as a value to the squares dictionary.

Simple Examples of Dictionary Comprehension

Dictionary comprehension in Python is an efficient way to create dictionaries. It's a concise syntax that reduces the amount of code you need to write. Let's start with a simple example.

# Creating a dictionary of squares for numbers from 0 to 5
squares = {num: num**2 for num in range(6)}


{0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25}

In this example, the expression num: num**2 is the key-value pair of the new dictionary. The for num in range(6) is the context of the dictionary comprehension, specifying the range of numbers to include in the dictionary.

Advanced Dictionary Comprehension

You can also use dictionary comprehension for more complex operations. Let's take a look at a case where we create a dictionary from a list of words, with the words as keys and their lengths as values.

words = ["Python", "comprehension", "dictionary", "example"]
word_lengths = {word: len(word) for word in words}


{'Python': 6, 'comprehension': 13, 'dictionary': 10, 'example': 7}

The expression word: len(word) generates the key-value pairs. The for word in words provides the context, iterating over each word in the list.


Dictionary comprehension in Python offers a concise and efficient way to create dictionaries. By understanding how to use it properly, you can write cleaner, more efficient code. As with any tool, the key to using this effectively is understanding its strengths and limitations.

Last Updated: August 29th, 2023
Was this helpful?

Ā© 2013-2024 Stack Abuse. All rights reserved.