Most Frequently asked Interview Questions of dictionary

author image Hirely
at 04 Jan, 2025

Question: What are dictionary comprehensions in Python and how do they work?

Answer:

Dictionary comprehensions in Python are a concise and readable way to create dictionaries. They are similar to list comprehensions but are specifically designed for creating dictionaries, where you can map keys to values.

A dictionary comprehension follows this basic syntax:

{key_expression: value_expression for item in iterable if condition}
  • key_expression: This defines the key in the dictionary.
  • value_expression: This defines the corresponding value for that key.
  • iterable: The iterable object (like a list, tuple, or range) that is being looped through.
  • condition: An optional condition to filter the items from the iterable.

Example 1: Basic dictionary comprehension

squares = {x: x**2 for x in range(5)}
print(squares)

Output:

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

In this example, the keys are numbers from 0 to 4 (generated by range(5)), and the values are the squares of these numbers.

Example 2: With a condition

even_squares = {x: x**2 for x in range(10) if x % 2 == 0}
print(even_squares)

Output:

{0: 0, 2: 4, 4: 16, 6: 36, 8: 64}

Here, the comprehension includes a condition (if x % 2 == 0) that only adds even numbers and their squares to the dictionary.

Benefits:

  • Concise syntax: A dictionary comprehension allows you to create dictionaries in a single line of code, making the code more compact and readable.
  • Performance: Since dictionary comprehensions are optimized for performance, they can be faster than traditional methods for creating dictionaries using loops.

Conclusion:

Dictionary comprehensions provide a more Pythonic way to create dictionaries from iterables, often replacing the need for using loops or the dict() constructor.

Question: How can you remove a key-value pair from a dictionary?

Answer:

In Python, there are several ways to remove a key-value pair from a dictionary:

1. Using the del statement:

The del statement is used to remove a key-value pair from the dictionary by specifying the key.

my_dict = {'a': 1, 'b': 2, 'c': 3}
del my_dict['b']
print(my_dict)

Output:

{'a': 1, 'c': 3}
  • If the key doesn’t exist in the dictionary, a KeyError will be raised.

2. Using the pop() method:

The pop() method removes the key-value pair and returns the value of the removed key.

my_dict = {'a': 1, 'b': 2, 'c': 3}
removed_value = my_dict.pop('b')
print(my_dict)
print("Removed value:", removed_value)

Output:

{'a': 1, 'c': 3}
Removed value: 2
  • If the key doesn’t exist and you don’t provide a default value, a KeyError will be raised. You can also provide a default value to return if the key is not found:
removed_value = my_dict.pop('d', 'Key not found')
print(removed_value)

Output:

Key not found

3. Using the popitem() method:

The popitem() method removes and returns the last key-value pair as a tuple. It is useful when you want to remove an arbitrary item (especially when iterating through the dictionary).

my_dict = {'a': 1, 'b': 2, 'c': 3}
removed_item = my_dict.popitem()
print(my_dict)
print("Removed item:", removed_item)

Output:

{'a': 1, 'b': 2}
Removed item: ('c', 3)
  • If the dictionary is empty, calling popitem() will raise a KeyError.

4. Using the clear() method (removes all key-value pairs):

If you want to remove all key-value pairs in a dictionary, you can use the clear() method. This doesn’t remove a specific key but clears the entire dictionary.

my_dict = {'a': 1, 'b': 2, 'c': 3}
my_dict.clear()
print(my_dict)

Output:

{}

Summary:

  • Use del to remove a specific key-value pair.
  • Use pop() to remove a specific key-value pair and return the value.
  • Use popitem() to remove and return the last key-value pair.
  • Use clear() to remove all items from the dictionary.

Each method has its own use case depending on whether you want to handle missing keys, return the removed value, or remove all items.

Question: What is the difference between del, pop(), and popitem() when deleting from a dictionary?

Answer:

When deleting a key-value pair from a dictionary in Python, there are key differences in how del, pop(), and popitem() operate:

1. del statement:

  • Purpose: del removes a key-value pair from the dictionary by specifying the key.
  • Return Value: It does not return the removed value.
  • Error Handling: If the specified key does not exist, it raises a KeyError.
  • Use Case: Use del when you know the key exists and you just want to remove the pair without needing the value.

Example:

my_dict = {'a': 1, 'b': 2, 'c': 3}
del my_dict['b']
print(my_dict)  # Output: {'a': 1, 'c': 3}

2. pop() method:

  • Purpose: pop() removes a key-value pair from the dictionary and returns the value of the removed key.
  • Return Value: Returns the value associated with the removed key.
  • Error Handling: If the key does not exist and no default value is provided, it raises a KeyError. You can provide a default value, and if the key is not found, it returns that default instead.
  • Use Case: Use pop() when you want to remove a key-value pair and need the value of the removed key.

Example:

my_dict = {'a': 1, 'b': 2, 'c': 3}
removed_value = my_dict.pop('b')
print(my_dict)  # Output: {'a': 1, 'c': 3}
print(removed_value)  # Output: 2

With default value:

removed_value = my_dict.pop('d', 'Key not found')
print(removed_value)  # Output: Key not found

3. popitem() method:

  • Purpose: popitem() removes and returns the last key-value pair from the dictionary.
  • Return Value: Returns the removed key-value pair as a tuple (key, value).
  • Error Handling: If the dictionary is empty, it raises a KeyError.
  • Use Case: Use popitem() when you want to remove and retrieve the last inserted key-value pair, which is useful in scenarios where the dictionary is ordered (in Python 3.7+).

Example:

my_dict = {'a': 1, 'b': 2, 'c': 3}
removed_item = my_dict.popitem()
print(my_dict)  # Output: {'a': 1, 'b': 2}
print(removed_item)  # Output: ('c', 3)

Key Differences:

  1. Targeted Removal:

    • del: Removes a specific key-value pair based on the key (raises KeyError if key does not exist).
    • pop(): Removes a specific key-value pair and returns the value (raises KeyError if key does not exist, but allows a default value to be provided).
    • popitem(): Removes and returns the last key-value pair (raises KeyError if the dictionary is empty).
  2. Return Values:

    • del: Does not return anything.
    • pop(): Returns the value of the removed key.
    • popitem(): Returns the key-value pair as a tuple.
  3. Error Handling:

    • del: Raises KeyError if the key is not found.
    • pop(): Raises KeyError by default if the key is not found, but you can provide a default value to avoid the error.
    • popitem(): Raises KeyError if the dictionary is empty.

Summary:

  • Use del when you need to remove a specific key and don’t need the removed value.
  • Use pop() when you need the value of the removed key.
  • Use popitem() when you need to remove and return the last key-value pair from the dictionary.

Question: How do you sort a dictionary by its keys or values in Python?

Answer:

In Python, dictionaries are unordered collections, but you can sort them by their keys or values using built-in functions like sorted(). Sorting a dictionary doesn’t modify the original dictionary (since it’s unordered), but it returns a sorted list of tuples (key-value pairs).

1. Sorting a Dictionary by Keys:

To sort a dictionary by its keys, you can use the sorted() function and specify that the sorting should be done based on the dictionary’s keys.

Example: Sort by Keys (Ascending Order)
my_dict = {'b': 2, 'a': 1, 'c': 3}
sorted_by_keys = sorted(my_dict.items())
print(sorted_by_keys)

Output:

[('a', 1), ('b', 2), ('c', 3)]
  • my_dict.items() returns a list of tuples (key-value pairs).
  • sorted() sorts the tuples based on the first element of each tuple, which is the key in this case.
Sort by Keys in Descending Order:

You can pass the reverse=True argument to sort in descending order.

sorted_by_keys_desc = sorted(my_dict.items(), reverse=True)
print(sorted_by_keys_desc)

Output:

[('c', 3), ('b', 2), ('a', 1)]

2. Sorting a Dictionary by Values:

To sort a dictionary by its values, you can use the sorted() function with a custom key function. You need to sort by the second element of each tuple (the value), which can be done using a lambda function.

Example: Sort by Values (Ascending Order)
my_dict = {'b': 2, 'a': 1, 'c': 3}
sorted_by_values = sorted(my_dict.items(), key=lambda item: item[1])
print(sorted_by_values)

Output:

[('a', 1), ('b', 2), ('c', 3)]
  • The key=lambda item: item[1] argument tells Python to sort the dictionary based on the second element of the tuple, which is the value.
Sort by Values in Descending Order:

Again, you can use reverse=True to sort in descending order.

sorted_by_values_desc = sorted(my_dict.items(), key=lambda item: item[1], reverse=True)
print(sorted_by_values_desc)

Output:

[('c', 3), ('b', 2), ('a', 1)]

3. Sorting and Creating a New Dictionary:

If you want to create a new dictionary that is sorted by either keys or values, you can use the dict() constructor to convert the sorted list of tuples back into a dictionary.

Example: Sorted by Keys (Ascending Order):
sorted_dict_by_keys = dict(sorted(my_dict.items()))
print(sorted_dict_by_keys)

Output:

{'a': 1, 'b': 2, 'c': 3}
Example: Sorted by Values (Ascending Order):
sorted_dict_by_values = dict(sorted(my_dict.items(), key=lambda item: item[1]))
print(sorted_dict_by_values)

Output:

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

Summary:

  • Sort by Keys: Use sorted(my_dict.items()) for ascending or sorted(my_dict.items(), reverse=True) for descending.
  • Sort by Values: Use sorted(my_dict.items(), key=lambda item: item[1]) for ascending or sorted(my_dict.items(), key=lambda item: item[1], reverse=True) for descending.
  • If you want a new sorted dictionary, you can pass the sorted list of tuples to the dict() constructor.

Note: Dictionaries in Python 3.7+ maintain insertion order, so while sorting doesn’t modify the dictionary itself, you can use these methods to create sorted dictionaries as needed.

Read More

If you can’t get enough from this article, Aihirely has plenty more related information, such as dictionary interview questions, dictionary interview experiences, and details about various dictionary job positions. Click here to check it out.

Trace Job opportunities

Hirely, your exclusive interview companion, empowers your competence and facilitates your interviews.

Get Started Now