Reversing a Dictionary with List Values
Inverting a dictionary involves creating a new dictionary where the keys and values of the original dictionary are swapped. When the original dictionary contains list values, it presents challenges due to Python's inability to hash lists.
Using Tuples for Tuple Keys
One approach to address this issue is to convert the list values to tuples. Tuples are immutable and can be hashed, allowing them to serve as keys in a dictionary.
Consider the following code:
<code class="python">inverted_index = {} for key, values in index.items(): for value in values: tuple_key = (key, value) inverted_index.setdefault(tuple_key, []).append(key)</code>
This code creates a new key for each unique combination of the original key and value. The inverted_index dictionary is then populated with the reversed key-value pairs.
Using Sets for Unique Values
Alternatively, you can use sets to handle duplicate values in the inverted dictionary. Sets are unordered collections of unique elements.
<code class="python">inverted_index = {} for key, values in index.items(): unique_values = set(values) for value in unique_values: inverted_index.setdefault(value, set()).add(key)</code>
This code creates a set of unique values for each original key. The inverted_index dictionary is then populated with the reversed key-value pairs, where the values are sets of unique original keys.
The above is the detailed content of How to Reverse a Dictionary with List Values?. For more information, please follow other related articles on the PHP Chinese website!