CF84 CF84 - 1 month ago 5
Python Question

Python: how many times do the values in a list appear in a dictionary of lists?

Say you have a list of

float
values like this:

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
appears in the sublists of
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
and the sublist contains the number of occurrences of each value.

Can this be done using
Counter
? The order of the values in the sublists is not important.

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

Answer

You can convert the values of d1 to Counters 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]}