CF84 - 10 months ago 54

Python Question

Say you have a list of

`float`

`l=[0.1,0.3,0.2]`

And a dictionary of lists like this:

`d1={0:[0.1,0.1,0.1,0.2], 1:[0.1,0.3,0.2], 2:[0.3,0.2,0.1]}`

What would be a Pythonic way of counting how many times each value in

`l`

`d1`

The intended outcome would be a dictionary of lists like this:

`d2={0.1:[3,1,1], 0.2:[1,1,1], 0.3:[0,1,1]}`

where the key is the value in

`l`

Can this be done using

`Counter`

NB: this question is not the same as this other, where a list of dictionaries is involved.

Answer Source

You can convert the values of `d1`

to `Counter`

s and gather them in a list, and then use it to produce lists of number of occurrences of every element in `l`

in the given order

```
In [12]: counters = [Counter(l) for l in d1.values()]
In [13]: {num: [c[num] for c in counters] for num in l}
Out[13]: {0.1: [3, 1, 1], 0.2: [1, 1, 1], 0.3: [0, 1, 1]}
```