FaCoffee
FaCoffee

Reputation: 7909

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.

Upvotes: 0

Views: 145

Answers (1)

vaultah
vaultah

Reputation: 46533

You can convert the lists inside d1 to Counter objects and gather them in a list. That list will then be used to get the number of occurrences of each element of l in every sublist while keeping the order:

In [12]: counters = [Counter(v) for v 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]}

Upvotes: 2

Related Questions