Python Dictionary values() Method

The Python dict.values() method returns all values from a dictionary.

It is useful when you want the values only and do not need the keys. A common beginner use case is getting all values from a dictionary so you can print them, loop through them, or convert them to a list.

Quick example #

student = {"name": "Ana", "age": 20, "city": "Lima"}
values = student.values()

print(values)
print(list(values))

Output:

dict_values(['Ana', 20, 'Lima'])
['Ana', 20, 'Lima']

values() returns a dictionary view object. Convert it to a list if you want a regular list.

What values() does #

  • It is used on a dictionary
  • It returns all dictionary values
  • It keeps the same order as the dictionary
  • It returns a view object, not a new list

If you already know how to create dictionaries, see creating a dictionary in Python.

Basic syntax #

my_dict.values()

Key points:

  • values() takes no arguments
  • It works only on dictionary objects
  • You must include the parentheses: values()

This is a dictionary method, similar to keys() for dictionary keys and items() for key-value pairs.

What values() returns #

values() returns a dict_values object.

This object is a view of the dictionary values. That means it shows the current values in the dictionary, and it updates if the dictionary changes.

Example:

person = {"name": "Mia", "age": 25}

values_view = person.values()
print(values_view)

person["city"] = "Quito"
print(values_view)

Output:

dict_values(['Mia', 25])
dict_values(['Mia', 25, 'Quito'])

If you need a regular list, use list(my_dict.values()).

person = {"name": "Mia", "age": 25}
values_list = list(person.values())

print(values_list)

Output:

['Mia', 25]

Simple example #

Here is a basic example step by step:

car = {"brand": "Toyota", "year": 2022, "color": "blue"}

result = car.values()

print(result)
print(list(result))

Output:

dict_values(['Toyota', 2022, 'blue'])
['Toyota', 2022, 'blue']

What happens here:

  • car is a dictionary
  • car.values() gets all values
  • print(result) shows the dict_values object
  • print(list(result)) shows the same values as a list

Looping through dictionary values #

You can loop through dictionary values with a for loop.

scores = {"math": 90, "english": 85, "science": 88}

for value in scores.values():
    print(value)

Output:

90
85
88

This is useful when:

  • You only need the values
  • You do not care about the keys
  • You want simpler code

If you want to loop through keys and values together, see Python dictionary items() method or how to loop through a dictionary in Python.

Converting values to a list #

Use list(my_dict.values()) when you need a list.

fruit_prices = {"apple": 2, "banana": 1, "orange": 3}

price_list = list(fruit_prices.values())

print(price_list)
print(price_list[0])

Output:

[2, 1, 3]
2

This is helpful for:

  • Displaying the values as a normal list
  • Accessing values by index
  • Passing the values to code that expects a list

This matters because dict_values is not the same as a list.

values() vs keys() vs items() #

These three dictionary methods are related, but they return different things:

  • values() returns only the values
  • keys() returns only the keys
  • items() returns key-value pairs

Examples:

student = {"name": "Ana", "age": 20}

print(student.keys())
print(student.values())
print(student.items())

Output:

dict_keys(['name', 'age'])
dict_values(['Ana', 20])
dict_items([('name', 20)])

Use:

Common beginner mistakes #

Here are some common problems with values().

Calling values() on the wrong type #

values() works on dictionaries only.

Wrong:

my_list = [1, 2, 3]
print(my_list.values())

This causes an error because lists do not have a values() method.

To debug this, check the type:

print(type(my_list))

If you get an AttributeError, see how to fix 'object has no attribute' errors.

Assuming values() returns a list #

Beginners often expect this:

student = {"name": "Ana", "age": 20}
values = student.values()

print(type(values))

Output:

<class 'dict_values'>

It returns dict_values, not a list.

If you need a list:

values = list(student.values())

Trying to use an index directly on dict_values #

This may not work the way you expect:

student = {"name": "Ana", "age": 20}
values = student.values()

# print(values[0])  # Avoid this

Convert to a list first:

student = {"name": "Ana", "age": 20}
values = list(student.values())

print(values[0])

Using values instead of values() #

This is also a common mistake:

student = {"name": "Ana", "age": 20}

print(student.values)

student.values refers to the method itself, not the result.

Use:

print(student.values())

Using parentheses incorrectly on the dictionary variable #

Make sure the method is called on the dictionary:

data = {"a": 1, "b": 2}
print(data.values())

Not like this:

# Wrong examples:
# data().values()
# values(data)

Useful debugging steps:

print(type(my_dict))
print(my_dict)
print(my_dict.values())
print(list(my_dict.values()))

FAQ #

What does dict.values() return in Python? #

It returns a dict_values view object containing the dictionary’s values.

Does values() return a list? #

No. It returns a view object. Use list(...) if you need a list.

Can I loop through dict.values()? #

Yes. It is iterable, so you can use it in a for loop.

Does dict.values() change if the dictionary changes? #

Yes. The returned view reflects updates to the dictionary.

How is values() different from items()? #

values() returns only values. items() returns key-value pairs.

See also #

Press Esc to close