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

时间:2016-10-25 16:10:39

标签: python list dictionary counter

假设您有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完成吗?子列表中值的顺序并不重要。

注意:这个问题is not the same as this other,其中涉及字典列表。

1 个答案:

答案 0 :(得分:2)

您可以将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]}