What’s New ?

The Top 10 favtutor Features You Might Have Overlooked

Read More

Python defaultdict() Explained (with code)

  • Sep 18, 2024
  • 7 Minutes Read
  • Why Trust Us
    We uphold a strict editorial policy that emphasizes factual accuracy, relevance, and impartiality. Our content is crafted by top technical writers with deep knowledge in the fields of computer science and data science, ensuring each piece is meticulously reviewed by a team of seasoned editors to guarantee compliance with the highest standards in educational content creation and publishing.
  • By Kusum Jain
Python defaultdict() Explained (with code)

One of the most beautiful parts of Python is the defaultdict class from the collections module. Today, we will learn about of defaultdict, its various applications, including its usage, initialization, removal of entries.

Defaultdict in Python

Before we delve into the details, let's first understand what defaultdict actually is. Simply, defaultdict is a subclass of the built-in dict class that provides a default value for a nonexistent key. It means that when accessing a key that does not exist in a defaultdict, it will not raise a KeyError. Instead, it will create the key and assign a default value based on the specified default factory.

defaultdict in Python is like a cheat code for handling dictionaries without dealing with key errors! Let's consider an example that demonstrates it's usage:

from collections import defaultdict

def main():
    my_dict = defaultdict(int)
    my_dict['apple'] += 1
    my_dict['banana'] += 2

    print(my_dict)

if __name__ == "__main__":
    main()

 

In the above code snippet, we import the defaultdict class from the collections module. We initialize a defaultdict named my_dict with a default factory of int. This default factory specifies that if a key is accessed and does not exist in the dictionary, it will automatically assign the default value of 0. We increment the value for the key 'apple' by 1 and for the key 'banana' by 2.

Finally, we print the my_dict, which now contains the key-value pairs with their updated values.

Removing an Entry from Defaultdict

To remove an entry from a defaultdict, you can use the regular del statement, just like you would with a standard dictionary. Check the example below:

from collections import defaultdict

def main():
    my_dict = defaultdict(int)
    my_dict['apple'] += 1
    my_dict['banana'] += 2

    del my_dict['apple']

    print(my_dict)

if __name__ == "__main__":
    main()

 

In this example, we create a defaultdict named my_dict with a default factory of int. We increment the value for the key 'apple' by 1 and for the key 'banana' by 2. Then, we use del to remove the entry with the key 'apple' from my_dict. The output will be the updated my_dict without the 'apple' key-value pair.

Initializing a Dictionary with a Default Value

Before the introduction of defaultdict, initializing a dictionary with a default value required additional code and checks. However, with defaultdict, this task becomes much simpler. You can initialize a dictionary with a default value by specifying the default factory when creating the defaultdict object. Here's an example:

from collections import defaultdict

def main():
    my_dict = defaultdict(lambda: 'N/A')
    my_dict['name'] = 'John'

    print(my_dict['name'])
    print(my_dict['age'])

if __name__ == "__main__":
    main()

 

In this example, we initialize a defaultdict named my_dict with a default factory using a lambda function. The lambda function specifies that if a key is accessed and does not exist in the dictionary, it will automatically assign the default value 'N/A'. We assign a value to the 'name' key as 'John'. When we access the 'name' key, it prints 'John', but when we access the 'age' key, which doesn't exist, it prints the default value 'N/A'.

Difference between Setdefault and Defaultdict

The setdefault method and defaultdict serve similar purposes of providing default values for non-existent keys. However, there are differences between them.

While setdefault is a method available in the standard dict class, defaultdict is a separate class altogether.

The key distinction lies in their usage. With setdefault, you provide the default value for a specific key only when the key is not present in the dictionary. In contrast, defaultdict sets a default value for any non-existent key, eliminating the need to check for key existence explicitly.

Conclusion

Overall, defaultdict is an amazing tool if you are a Python dev. It provides automatic default value assignment for non-existent keys, reducing the need for manual checks and initialization. We use it to simplify handling dictionaries, especially when dealing with missing keys. It makes the code cleaner, reduces boilerplate, and is particularly handy in scenarios like counting occurrences, grouping data, or building collections of values tied to unique keys. 

FavTutor - 24x7 Live Coding Help from Expert Tutors!

About The Author
Kusum Jain
I am an avid coder on CodeChef, I partake in hackathons regularly. I am an independent and self-motivated student with a love for coding and experiencing new things.