Python:列表中的值在列表字典中出现了多少次?

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

假设您有一个包含 float 个值的列表,如下所示:

l=[0.1,0.3,0.2]

还有像这样的列表字典: d1={0:[0.1,0.1,0.1,0.2], 1:[0.1,0.3,0.2], 2:[0.3,0.2,0.1]}

计算 l 中的每个值在 d1 的子列表中出现的次数的 Pythonic 方法是什么?

预期的结果将是这样的列表字典:

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

其中键是 l 中的值,子列表包含每个值的出现次数。

可以使用 Counter 来完成吗?子列表中值的顺序并不重要。

注意:这个问题,其中涉及字典列表。

您可以将 d1 中的列表转换为 Counter 对象并将它们聚集在一个列表中。然后该列表将用于获取每个子列表中 l 的每个元素的出现次数,同时保持顺序:

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]}