Python Dictionary keys() Method
The Python dictionary keys() method returns all keys from a dictionary.
It is useful when you want to:
- view the available keys
- loop through dictionary keys
- check what fields exist in a dictionary
keys() does not return a regular list. It returns a special object called dict_keys.
Quick example #
student = {"name": "Ana", "age": 20}
keys = student.keys()
print(keys)
print(list(keys))
Output:
dict_keys(['name', 'age'])
['name', 'age']
Use keys() to get a view of all dictionary keys. Convert it to a list if you want a regular list output.
What keys() does #
keys() is a dictionary method that returns all keys from a dictionary.
Important points:
- It returns all keys from a dictionary
- It does not need any arguments
- It returns a
dict_keysview object, not a list - The view updates if the dictionary changes
Example:
person = {"name": "Liam", "age": 25}
print(person.keys())
person["city"] = "Paris"
print(person.keys())
Output:
dict_keys(['name', 'age'])
dict_keys(['name', 'age', 'city'])
Notice that the result updates after the dictionary changes.
Basic example #
Here is a simple example with a small dictionary:
data = {"name": "Ana", "age": 20, "grade": "A"}
print(data.keys())
print(list(data.keys()))
Output:
dict_keys(['name', 'age', 'grade'])
['name', 'age', 'grade']
This shows two things:
data.keys()returns adict_keysobjectlist(data.keys())converts it into a regular list
If you are new to dictionaries, see how to create a dictionary in Python.
Syntax #
The syntax is:
my_dict.keys()
Things to remember:
- It works only on dictionaries
- It takes no parameters
- You must include the parentheses
Correct:
student = {"name": "Ana"}
print(student.keys())
Incorrect:
student = {"name": "Ana"}
print(student.keys)
Without parentheses, you are referring to the method itself, not calling it.
Return value #
keys() returns a dict_keys object.
This object:
- contains all keys in the dictionary
- can be used in a loop
- can be converted with
list() - is useful when checking available keys
Example:
car = {"brand": "Toyota", "year": 2020}
result = car.keys()
print(result)
print(type(result))
Output:
dict_keys(['brand', 'year'])
<class 'dict_keys'>
If you want dictionary values instead, see the Python dictionary values() method. If you want both keys and values together, see the Python dictionary items() method.
Looping through dictionary keys #
You can loop through the keys like this:
student = {"name": "Ana", "age": 20, "course": "Math"}
for key in student.keys():
print(key)
Output:
name
age
course
In most cases, this also works:
for key in student:
print(key)
Both are valid. For beginners, student.keys() is more explicit because it clearly shows that you are looping through keys.
When to use keys() #
Use keys() when:
- you only need the dictionary keys
- you want to display available fields
- you want to inspect what keys exist in a dictionary
Example:
product = {"name": "Book", "price": 12.99, "stock": 5}
print("Available fields:")
for key in product.keys():
print(key)
Output:
Available fields:
name
price
stock
You may also see membership checks like this:
product = {"name": "Book", "price": 12.99}
print("name" in product.keys())
This works and returns True.
However, this is usually simpler:
print("name" in product)
If you want to learn that pattern, see how to check if a key exists in a dictionary in Python.
Common beginner confusion #
Here are some common mistakes beginners make with keys().
Expecting keys() to return key-value pairs #
keys() returns only the keys.
Example:
data = {"name": "Ana", "age": 20}
print(data.keys())
Output:
dict_keys(['name', 'age'])
If you want both keys and values, use items().
Expecting a list instead of dict_keys #
Many beginners expect this:
['name', 'age']
But keys() returns:
dict_keys(['name', 'age'])
If you need a real list, convert it:
data = {"name": "Ana", "age": 20}
key_list = list(data.keys())
print(key_list)
Trying to use keys() on a list or string #
keys() only works on dictionaries.
This causes an error:
numbers = [1, 2, 3]
print(numbers.keys())
You may get an AttributeError because lists do not have a keys() method. If that happens, see how to fix 'object has no attribute' errors in Python.
Forgetting parentheses #
This is a very common mistake:
data = {"name": "Ana"}
print(data.keys)
That prints the method object, not the keys.
Use:
print(data.keys())
Common mistakes #
These are the most common problems related to keys():
- Using
keys()on a non-dictionary object - Thinking
keys()returns values too - Trying to index
dict_keyslike a normal list - Forgetting to convert
dict_keysto a list when needed
For example, this may not work the way you expect:
data = {"a": 1, "b": 2}
keys = data.keys()
print(keys)
# print(keys[0]) # This may cause an error
If you need indexing, convert first:
data = {"a": 1, "b": 2}
keys = list(data.keys())
print(keys[0])
Debugging tips #
If something is not working, these quick checks can help:
print(type(my_dict))
print(my_dict)
print(my_dict.keys())
print(list(my_dict.keys()))
These help you confirm:
- whether the variable is really a dictionary
- what data it contains
- what
keys()returns - what the keys look like as a list
FAQ #
What does dictionary keys() return in Python? #
It returns a dict_keys view object containing all keys in the dictionary.
Is dict.keys() a list? #
No. It returns a dict_keys object. You can convert it with list(dict.keys()).
Can I loop through dict.keys()? #
Yes. You can use it in a for loop.
Do I need to use keys() to loop through a dictionary? #
No. You can loop directly over the dictionary, but keys() makes your intent clearer.
How do I get the keys as a list? #
Use list(my_dict.keys()).