How To Access A Dictionary Key By Index In Python?

This tutorial is about how to access dictionary key by index in Python. Dictionaries are used to store key values. The keys in a dictionary do not need to be unique so that a variable can keep both values with different values and keys with the same value. A dictionary key can easily be accessed by its index in Python programming language. This page covers methods to grab dictionary keys by index and the purpose of considering keys by index, all demonstrated by examples. 

Some of the common methods used to access a dictionary key by Index in python are:

  • Instantiated The key as a list.
  • By defining a function 
  • Using keys() to access dictionary keys by index
  • Index() method to grab dictionary key by index
  • Accessing key-Index with function using enumerate() function
  • Access dictionary keys by index with an index-slicing approach
  • Access dictionary keys by index using the items() method
  • Using list comprehension to access dictionary key by index 
  • Dictionary  comprehension to access key by index

*Working on Jupyter Notebook Anaconda Environment. 

What is the purpose of considering Dictionary by index in Python?

Considering the dictionary as an index is essential for many problems. For example, you can store a list of weekdays or months that needs to be sorted in a particular order. However, to get the values of a dict, you can keep your list of Weekdays or Months in a dict, index them, then feed the dict with those values.

Instantiated The key as a list.

The keys are instantiated as a list to grab a Dictionary Key by index In Python. In order to display the keys view as a list, the keys view must be instantiated. 

The following example returns a list of keys from a menu object by calling the list(cuisines). [index] returns the key at index in fst_key, and index slicing structure to access a dictionary key-values in fst_value. 

The execution process goes in the following manner;

#simple dictionary with key-values
cuisines = {
  "dish01": "Thai",
  "dish02": "Moroccan",
  "dish03": ["Turkish"]
}
fst_key = list(cuisines)[2]
fst_val = list(cuisines.values())[2][0]
print("fst_key: ",fst_key)
print("fst_val: ", fst_val)
fst_key:  dish03
fst_val:  Turkish

By defining a function 

Accessing a dictionary key by index In Python is possible by using a “key” with for…in structure in aggregation with enumerating function. 

The following example executes in the following sequence.

  • Define a function using “def”, and name it get_nth_key()
  • Now pass the condition in the “if” statement. Here “if” the key index is equal to “2”, 
  • Using len(), you can find out how many keys/items are in a dictionary.  
  • key()” returns an object with all dictionary keys. 
  • Another condition is called in the function body, so if it returns true, the program continues and prints the key.
  • Then return the object key to give justice to the function body. 
  • Now call the function, pass the Dictionary as an argument, and store the values by creating an object “fst_key”. 
  • Finally, create an object “fst_val” to store the value of the respective key index from the dictionary “cuisines”.
#simple dictionary with key-values
cuisines = {
  "dish01": "Thai",
  "dish02": "Moroccan",
  "dish03": ["Turkish"]
}
def get_nth_key(cuisines, i=2):
    if i < 2:
        i += len(cuisines)
    for j, key in enumerate(cuisines.keys()):
         if j == i:
            return key
fst_key = get_nth_key(cuisines)
fst_val = cuisines[fst_key]
print("fst_key: ",fst_key)
print("fst_val: ", fst_val)
fst_key:  dish03
fst_val:  ['Turkish']

Using keys() to access dictionary keys by index

Its output will answer whether key() and values() in a dictionary return the same order. So the answer is yes, it does. As you insert items(keys-values), dictionaries return them in that order. 

In the following example, the inserted order for the list of flowers is [1,2,3], and we want to access a dictionary key by index 2. At index 2, the inserted order for the specific key is ‘3.’

# a dictionary
flowers_dict = {'Red Ginger': 1, 'Tree Poppy': 2, 'passion flower': 3, 'water lily': 4}
#using keys() with dictionary using dot(.) operator and calling list index we want
dict_index_value = flowers_dict[list(flowers_dict.keys())[2]]
print(dict_index_value)
3

index() method to grab dictionary key by index

Index() function allows us to access or grab the dictionary key by its index values. Here is how it executes in the following examples:

  • Create a  dictionary
  • A variable having no value
  • Now invoking if…in the structure.
  • However, if…in structure will iterate over an original dictionary and search for the particular key in the original dictionary. 
  • If the key matches the search query, 
  • it will return the index of that key.
  • However, save it to a variable if using list() + original dictionary + index location. It will print the key for that specific index. Moreover, you can pass the index of a particular key in square brackets, like [2], to grab the key. 
# a dictionary
flowers_dict = {'Red Ginger': 1, 'Tree Poppy': 2, 'passion flower': 3, 'water lily': 4}
#definihg the variable and passing no value to it. it will check while iterating,
#if there exists a value /key in the dictionary, it returns output otherwise returns an error
flower_index = None
if 'passion flower' in flowers_dict:
   flower_index = list(flowers_dict).index('passion flower')
print(flower_index) 
#using index() with dictionary and printing list index that we want to print
key = list(flowers_dict)[flower_index]
print(key)
2
passion flower

Accessing key-Index with function using enumerate() function

enumerate() function allows us to loop over the iterable by taking the iterable as a parameter in its scope. It starts counting from the index count by default.

Moreover, it helps to access a dictionary key and index both. 

The following example enumerates the function used to access a dictionary key by index in Python.

  • Defining a dictionary.
  • Defina a function and pass two parameters to it. One is the original dictionary, and the other is the accessing key index. 
  • Use non-list comprehension structure in aggregation with enumerate function.
  • The for…in structure, iterate over dictionary keys using enumerate function. The enumerate function list all the keys in index order (count starts with 0)
  • If the statement checks whether the variable k_key matches the passing attribute of the function.
  •  If the statement matches, it returns the index for that attribute. 
  • Now call a function and pass attributes or give values to its parameters. 
  • This will return the index for that key. Here in this way, you can access the dictionary index by key. 
# a dictionary
flowers_dict = {'Red Ginger': 1, 'Tree Poppy': 2, 'passion flower': 3, 'water lily': 4}
def access_key_at_index(flowers_dict, accessing_key):
#enumerate read the dictionary in index order from 0,1,...
   for i_index, k_key in enumerate(flowers_dict.keys()):
#if the key is equal to or matches the key to be access
#in the function argument attribute, it will return the required index for that specific key
       if k_key == accessing_key:
           return i_index
#passing function attributes to its arguments
access_key_at_index(flowers_dict,"passion flower")
2

Grab dictionary key

You can access the dictionary key by indexing n Python in the following example. The execution is similar to the above example, but we are interested in grabbing the dictionary key by index here. The above example is vice-versa of it. 

At index 3, the particular key is ‘water lily’, the enumerate function starts its count from 0. 

# a dictionary
flowers_dict = {'Red Ginger': 1, 'Tree Poppy': 2, 'passion flower': 3, 'water lily': 4}
def access_key_at_index(flowers_dict, accessing_index):
#enumerate read the dictionary in index order from 0,1,...
   for i_index, k_key in enumerate(flowers_dict.keys()):
#if index is equal to or match with the index to be access
#in function argument attribute it will returns the required key for that specific index
       if i_index == accessing_index:
           return k_key
#passing function attributes to its arguments
access_key_at_index(flowers_dict,3)
'water lily'

Access dictionary keys by index with an index-slicing approach

Here is the simple approach to accessing keys by their index using the index slicing approach. 

In the following example, from a dictionary, every key is individual access by slicing using braces.

First, convert the dictionary to a list using the list() function to accomplish this task.

info = {'weekdays': ["Sunday", "Monday","Tuesday", "Thursday","Friday", "Saturday"],
         'month': ['Jan','Feb'],
         'year': '2023'}
access_key_by_index = list(info)
print(access_key_by_index[0])
print(access_key_by_index[1])
print(access_key_by_index[2])
weekdays
month
year

Do it in a more Pythonic way

A modified one-liner approach makes it more pythonic to accomplish this task  to access the key by index, remember, converting Dictionary to list 

The syntax follows:

print(list(info)[1])
info = {'weekdays': ["Sunday", "Monday","Tuesday", "Thursday","Friday", "Saturday"],
         'month': ['Jan','Feb'],
         'year': '2023'}
print(list(info)[1])
month

Access dictionary keys by index using the items() method

items () reads the dictionary, and translates it to a tuple in a list. Here is how it works:

  • A dictionary generation
  • Using list() in aggregation with items() to convert a dictionary to a list containing tuples.
  • Now invoke braces to access the dictionary key and values.
  • The default items() returns the value for both key-values.
info = {'weekdays': ["Sunday", "Monday","Tuesday", "Thursday","Friday", "Saturday"],
         'month': ['Jan','Feb'],
         'year': '2023'}
info = list(info.items())
#returns key-value both
print(info[2])
#returns key 
print(info[2][0])
#return value for a particular key
print(info[2][1])
('year', '2023')
year
2023

Using list comprehension to access dictionary key by index 

Using list comprehension one-liner structure in aggregation with items() method makes it easier to grab the dictionary key by its index in Python. However, Here is how it executes:

  • Considering a desired dictionary
  • Using list comprehension structure to perform the desired task
  • For…in structure, search the variable in the dictionary, and items() helps to find the required variable in the dictionary, where its value matches its corresponding value [‘Jan’,’Feb’].
  • Append [0] with list comprehension structure. It will delete [] and quotes from the desired results.
info = {'weekdays': ["Sunday", "Monday","Tuesday", "Thursday","Friday", "Saturday"],
         'month': ['Jan','Feb'],
         'year': '2023'}
#list comprehension
info = [k for k, v in info.items() if v == ['Jan','Feb']]
print(info)

info = {'weekdays': ["Sunday", "Monday","Tuesday", "Thursday","Friday", "Saturday"],
         'month': ['Jan','Feb'],
         'year': '2023'}
# append [0] to remove braces
append_info = [k for k, v in info.items() if v == ['Jan','Feb']][0]
print(append_info)
['month']
month

Dictionary  comprehension to access key by index

Dictionary comprehension is a one-liner syntax structure similar to list comprehension to perform the task and make it do the job in a more Pythonic way. 

Here dictionary comprehension is used in aggregation with the items() function to access the dictionary key by index in Python. 

Dictionary comprehension returns the output in the form of a dictionary format. However, list comprehension produces output in list format; in this case, we append [0] to remove the list format from the output. However, This way, we remove the brackets from the list or the opening and closing brackets from the output.

info = {'weekdays': ["Sunday", "Monday","Tuesday", "Thursday","Friday", "Saturday"],
         'month': ['Jan','Feb'],
         'year': '2023'}
# Check for items 2023 in the dictionary
dict_key = {i:j for (i,j) in info.items() if j=='2023'}
print(dict_key)
{'year': '2023'}

Another way to use dict comprehension is to access a dictionary key by index in python. 

In the following example, the dictionary key is accessed by index using dictionary comprehension. Then, the output variable is converted to a list and appended by [0] to remove the opening and closing brackets from the list. 

info = {'weekdays': ["Sunday", "Monday","Tuesday", "Thursday","Friday", "Saturday"],
         'month': ['Jan'],
         'year': '2023'}
dict_items  = {k for k, v in info.items() if v == ['Jan']}
print(list(dict_items)[0])
#append zeo to remove list format ['']
month

Conclusion

This page will find different methods for grabbing a dictionary key in Python by index. Python provides several procedures for accessing keys index in dictionaries. However, this page covers almost all the possible methods to access a dictionary key by index in Python. Use the one that best fits your problem.

If you want to learn more about Python Programming, visit Python Programming Tutorials.

Leave a Comment

Your email address will not be published. Required fields are marked *