Skip to content

Commit

Permalink
Merge pull request Chalarangelo#435 from 30-seconds/combine-values
Browse files Browse the repository at this point in the history
Add combine_values
  • Loading branch information
Chalarangelo authored Mar 15, 2021
2 parents 6e90052 + 05683b9 commit 38bc69c
Showing 1 changed file with 28 additions and 0 deletions.
28 changes: 28 additions & 0 deletions snippets/combine_values.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
---
title: combine_values
tags: dictionary,intermediate
---

Combines two or more dictionaries, creating a list of values for each key.

- Create a new `collections.defaultdict` with `list` as the default value for each key and loop over `dicts`.
- Use `dict.append()` to map the values of the dictionary to keys.
- Use `dict()` to convert the `collections.defaultdict` to a regular dictionary.

```py
from collections import defaultdict

def combine_values(*dicts):
res = defaultdict(list)
for d in dicts:
for key in d:
res[key].append(d[key])
return dict(res)
```

```py
d1 = {'a': 1, 'b': 'foo', 'c': 400}
d2 = {'a': 3, 'b': 200, 'd': 400}

combine_values(d1, d2) # {'a': [1, 3], 'b': ['foo', 200], 'c': 400, 'd': 400}
```

0 comments on commit 38bc69c

Please sign in to comment.