Home > Backend Development > Python Tutorial > How Can I Flatten a Nested Dictionary and Compress Its Keys in Python?

How Can I Flatten a Nested Dictionary and Compress Its Keys in Python?

Susan Sarandon
Release: 2024-12-31 06:01:13
Original
561 people have browsed it

How Can I Flatten a Nested Dictionary and Compress Its Keys in Python?

Flattening Nested Dictionaries with Key Compression

When working with complex data structures in your code, it can often be useful to "flatten" them for easier manipulation. This is particularly true for nested dictionaries, where multiple levels of keys and values can add complexity to your operations. In this article, we'll explore how to flatten a nested dictionary while compressing the keys.

The Problem

Consider the following nested dictionary:

{'a': 1,
 'c': {'a': 2,
       'b': {'x': 5,
             'y': 10}},
 'd': [1, 2, 3]}
Copy after login

The goal is to flatten this dictionary into something like:

{'a': 1,
 'c_a': 2,
 'c_b_x': 5,
 'c_b_y': 10,
 'd': [1, 2, 3]}
Copy after login

where the nested keys are compressed to create a single, flattened key.

The Solution

To flatten the nested dictionary, we can use the flatten() function from the collections.abc module. This function can be defined as follows:

def flatten(dictionary, parent_key='', separator='_'):
    items = []
    for key, value in dictionary.items():
        new_key = parent_key + separator + key if parent_key else key
        if isinstance(value, MutableMapping):
            items.extend(flatten(value, new_key, separator=separator).items())
        else:
            items.append((new_key, value))
    return dict(items)
Copy after login

Using the Function

To use the flatten() function, simply pass in the nested dictionary as an argument. The function will recursively traverse the dictionary, "flattening" it and compressing the keys.

>>> flatten({'a': 1, 'c': {'a': 2, 'b': {'x': 5, 'y': 10}}, 'd': [1, 2, 3]})
{'a': 1, 'c_a': 2, 'c_b_x': 5, 'd': [1, 2, 3], 'c_b_y': 10}
Copy after login

As you can see, the flattened dictionary has a single level of keys, with the keys being compressed to incorporate the nesting structure of the original dictionary.

The above is the detailed content of How Can I Flatten a Nested Dictionary and Compress Its Keys in Python?. For more information, please follow other related articles on the PHP Chinese website!

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Latest Articles by Author
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template