Python:在列表字典中使用Counter

时间:2016-10-25 15:10:02

标签: python list dictionary counter

给出这样的列表字典: d={0:[0.1,0.2,0.1], 1:[1.1,1.2,0.1], 2:[2.1,2.2,0.1]}

我希望能够计算每个值在所有列表中出现的次数。在给出的示例中,预期结果将是:

occurrences={0.1:4, 0.2:1, 1.1:1, 1.2:1, 2.1:1, 2.2:1}

我在考虑在这样的行中使用Counter

occurrences = Counter([k[0] for k in d.values()])

但输出为Counter({0.1: 1, 1.1: 1, 2.1: 1}),这意味着前一行仅计算每个列表的第一个元素的出现次数。

如何将此计数扩展到所有列表的所有元素?

2 个答案:

答案 0 :(得分:5)

由于您似乎并不关心字典的键,您可以使用理解:

>>> Counter(v for sublist in d.values() for v in sublist)
Counter({0.1: 4, 0.2: 1, 1.1: 1, 1.2: 1, 2.1: 1, 2.2: 1})

答案 1 :(得分:3)

您需要将所有值列表放在一个平面列表中,然后计数。您可以将字典的值列表传递给itertools.chain.from_iterable展平

 $("#modal").load("AccountManager/Update?id=" + id, function () {
            $("#modal").modal();
        })