Python dict() Function Explained

The built-in dict() function creates a new dictionary.

A dictionary stores data as key-value pairs. You use it when you want to connect one piece of data to another, such as a name to an age or a product to a price.

dict() is commonly used to:

  • create an empty dictionary
  • convert key-value pairs into a dictionary
  • build a dictionary from keyword arguments

If you are new to dictionaries, see Python dictionaries explained.

data = dict(name='Alice', age=25)
print(data)

pairs = [('a', 1), ('b', 2)]
print(dict(pairs))

Output:

{'name': 'Alice', 'age': 25}
{'a': 1, 'b': 2}

Use dict() to create a dictionary from keyword arguments or from key-value pairs.

What dict() does #

dict() creates a new dictionary object.

A dictionary:

  • stores data in key-value pairs
  • lets you look up values by key
  • is one of the most common Python data types

dict() is a built-in Python function, so you can use it directly without importing anything.

Common uses include:

  • making an empty dictionary
  • converting pairs into a dictionary
  • building a dictionary from keyword arguments

If you want a broader introduction to dictionary creation, see creating a dictionary in Python.

Basic syntax #

dict() can be used in a few different ways.

Create an empty dictionary #

data = dict()
print(data)

Output:

{}

Create a dictionary from pairs #

pairs = [('a', 1), ('b', 2)]
data = dict(pairs)
print(data)

Output:

{'a': 1, 'b': 2}

Create a dictionary from keyword arguments #

data = dict(name='Alice', age=25)
print(data)

Output:

{'name': 'Alice', 'age': 25}

Combine pairs or a mapping with keyword arguments #

You can also start with existing data and add more values:

data = dict([('a', 1)], b=2, c=3)
print(data)

Output:

{'a': 1, 'b': 2, 'c': 3}

Create an empty dictionary #

Use dict() when you want a clear function-style way to create an empty dictionary.

data = dict()
print(type(data))
print(data)

Output:

<class 'dict'>
{}

This gives the same result as:

data = {}

For empty dictionaries, {} is more common because it is shorter.
Still, dict() is useful to know because it can do more than just create an empty dictionary.

Create a dictionary from key-value pairs #

You can pass an iterable of 2-item pairs to dict().

pairs = [('name', 'Alice'), ('age', 25)]
data = dict(pairs)
print(data)

Output:

{'name': 'Alice', 'age': 25}

Each pair becomes:

  • the first item as the key
  • the second item as the value

For example, this also works with tuples:

pairs = (('a', 1), ('b', 2))
data = dict(pairs)
print(data)

Output:

{'a': 1, 'b': 2}

Each item must contain exactly two elements.

This causes an error:

bad_data = [('a', 1, 100), ('b', 2)]
result = dict(bad_data)

Python raises an error because ('a', 1, 100) has three values, not two.

If the same key appears more than once, the later value replaces the earlier one:

pairs = [('a', 1), ('a', 99), ('b', 2)]
data = dict(pairs)
print(data)

Output:

{'a': 99, 'b': 2}

Create a dictionary with keyword arguments #

You can also build a dictionary using keyword arguments:

data = dict(name='Alice', age=25)
print(data)

Output:

{'name': 'Alice', 'age': 25}

In this form:

  • name becomes the string key 'name'
  • age becomes the string key 'age'

This only works when the key names are valid Python identifiers.

Valid examples:

data = dict(city='Paris', country='France')
print(data)

Invalid key names include ones with:

  • spaces
  • hyphens
  • names that start with numbers

For example, this is not valid syntax:

# dict(first-name='Sam')

If you need keys like that, use normal dictionary syntax instead:

data = {'first-name': 'Sam', 'first name': 'Sam'}
print(data)

Output:

{'first-name': 'Sam', 'first name': 'Sam'}

dict() vs {} #

Both dict() and {} create dictionaries, but they are used in slightly different situations.

Use {} when: #

  • you want an empty dictionary
  • you want the shortest and most common syntax
data = {}

Use dict() when: #

  • you want to convert existing key-value pairs into a dictionary
  • you want to use keyword arguments
  • the function form makes the code easier to read
data = dict([('a', 1), ('b', 2)])
info = dict(name='Alice', age=25)

So:

  • {} is shorter for an empty dictionary
  • dict() is more flexible when building a dictionary from other data

After creating a dictionary, you may want to add a key to a dictionary in Python or safely read values with the Python dictionary get() method.

Common errors and limits #

Here are the most common problems beginners run into with dict().

Passing items that are not 2-value pairs #

This is wrong:

items = ['a', 'b']
data = dict(items)

This fails because each item must be a pair like ('a', 1).

Correct version:

items = [('a', 1), ('b', 2)]
data = dict(items)
print(data)

Using invalid keyword syntax #

This is not valid Python syntax:

# dict(name: 'Alice')

Keyword arguments must use =:

data = dict(name='Alice')
print(data)

Using key names that are not valid identifiers #

This will not work:

# dict(first-name='Sam')

Use standard dictionary syntax instead:

data = {'first-name': 'Sam'}
print(data)

Expecting duplicate keys to be kept #

If the same key appears more than once, the last value wins:

data = dict([('x', 1), ('x', 2)])
print(data)

Output:

{'x': 2}

If you are getting missing-key problems later, you may also run into KeyError in Python.

Common mistakes #

Common causes of problems with dict() include:

  • passing a list like ['a', 'b'] instead of [('a', 1), ('b', 2)]
  • using invalid keyword-style keys such as dict(first-name='Sam')
  • expecting duplicate keys to be kept separately
  • confusing dict() with the broader topic of dictionary creation in general

If something is not working, these quick checks can help:

print(type(data))
print(data)
print(list_of_pairs)
print(len(list_of_pairs))

These checks help you confirm:

  • whether your result is really a dictionary
  • what data is being passed in
  • whether your list of pairs has the expected structure

FAQ #

What is the difference between dict() and {}? #

{} is the short literal form. dict() is a function that can also convert pairs or use keyword arguments.

Can dict() create a dictionary from a list? #

Yes, if the list contains 2-item pairs such as [('a', 1), ('b', 2)].

Why does dict(name='Alice') use string keys? #

In keyword form, Python turns the keyword names into string keys automatically.

Can I use spaces in keys with dict() keyword arguments? #

No. For keys with spaces or other invalid identifier characters, use {'first name': 'Alice'} or pass pairs.

See also #

Press Esc to close