Python

Python

Python - Dictionary Unpacking

One of the powerful features in Python is dictionary unpacking, which can simplify your code and make it more readable.

Dictionary unpacking allows you to extract key-value pairs from a dictionary and assign them to variables in a single step. This can be handy when you want to pass dictionary values as function arguments or merge dictionaries.

In this section, we'll explore dictionary unpacking, its syntax, why it's useful, and some use cases.

Unpacking a Dictionary into Variables

Let us have a person dictionary that stores three pieces of information about an individual: their name, age, and city.

📌 Example:

👣 What's happening here? When we use person.values(), Python gives us access to all values in our dictionary. The unpacking operation then assigns each value to a variable in order.

  • When we use the line name, age, city = person, we are actually unpacking the keys of the dictionary because, by default, iterating over a dictionary yields its keys.
  • When we use the line name, age, city = person.values(), we are explicitly unpacking the values of the dictionary.
  • The method values() returns a view object containing all the values of the dictionary in the order they appear.

Remember that the number of variables to unpack must match the length of the dictionary. Otherwise, a ValueError will be raised - it won't let you accidentally miss any values!

Merging Dictionaries

The basic syntax for dictionary unpacking involves using the ** operator:

📌 Example: we combine two dictionaries, dict1 and dict2, into a single dictionary merged_dict using dictionary unpacking.

👣 Notice something interesting? When keys overlap (like 'b' in our example), the later dictionary wins - just like how your user's preferences should override the default settings.

  • dict1 contains two key-value pairs: 'a': 1 and 'b': 2.
  • dict2 also contains two key-value pairs: 'b': 3 and 'c': 4.
  • The ** operator unpacks each dictionary into a series of key-value pairs.
  • When unpacking and combining dictionaries, if there are duplicate keys, the values from the latter dictionary (dict2 in this case) will overwrite the values from the former dictionary (dict1).
  • merged_dict will include all key-value pairs from both dict1 and dict2.

Alternatively, you can update one dictionary with another using the traditional update method, but this modifies the original dictionary.

Function Arguments and Dictionary Unpacking

Here's a neat trick that can make your code much cleaner. Instead of passing multiple arguments one by one, you can unpack a dictionary:

📌 Example: The ** operator before person tells Python to unpack the dictionary into keyword arguments. Each key becomes a parameter name, and its value becomes the argument.

👣 Explanation:

  • We define a dictionary person that contains three key-value pairs
  • Next, we define a function display_info that takes three parameters: name, age, and city.
  • The function prints out these parameters in a formatted string.
  • We call the function display_info with the syntax display_info(**person).
  • The **person syntax unpacks the dictionary person into keyword arguments, effectively converting the dictionary entries into the form name="Alice", age=25, city="New York".
  • The function display_info receives the unpacked dictionary items as its arguments.

The double asterisk means that the contents of the dictionary will be passed to the function as named arguments. In this case, the keys will become the names of the parameters.

Why Use Dictionary Unpacking?

  • It makes the code more readable by reducing the need for multiple lines to extract and assign values.
  • It simplifies functions that take multiple arguments, especially when those arguments come from a dictionary.
  • Easily merge two or more dictionaries.

Happy coding!

FAQs on Dictionary Unpacking

Can I use dictionary unpacking to merge multiple dictionaries?

Absolutely! You can chain as many dictionaries as you need:

When merging, later values will override earlier ones if there are any duplicate keys.

What if I want to skip certain values while unpacking?

Use the underscore _ as a placeholder for values you want to ignore:

What's the difference between * and ** when unpacking?

* is for unpacking iterables (like lists or tuples), while ** is specifically for dictionaries.

Think of * as "spread these values" and ** as "spread these key-value pairs". They're like cousins, but they work on different types of data!

Function calls:

  • * breaks apart lists/tuples into positional arguments.
  • ** breaks apart dictionaries into keyword arguments.
Subscribe to our newsletter

Get the freshest news and resources for developers, designers and digital creators in your inbox each week

© 2000 – 2025 SitePoint Pty. Ltd.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.