【问题标题】:list of tuples to Counter or a dictionary of countsCounter 的元组列表或计数字典
【发布时间】:2021-11-23 12:13:40
【问题描述】:

我有一个元组列表。对于每个键,我想计算不同值的数量。

例如,

给定以下列表:

[(k1, 400), (k1, 500), (k2, 600), (k2, 600), (k3, 600)]

我想制作以下内容:

{k1: 2, k2: 1, k3: 1}

解释:

k1 有两个值(400、500)。 k2 只有一个值 (600)

Pythonic 的方法是什么?

【问题讨论】:

标签: python python-3.x


【解决方案1】:
from collections import defaultdict

list_of_tuples = [
    ("k1", 400),
    ("k1", 500),
    ("k2", 600),
    ("k2", 600),
    ("k3", 600),
]

dict_of_sets = defaultdict(set)

for key, value in list_of_tuples:
    dict_of_sets[key].add(value)

result = {key: len(value) for key, value in dict_of_sets.items()}

【讨论】:

  • 不确定这是否被认为是更多Pythonic。找出@Luuk by Counter 提供的链接更 Pythonic。
【解决方案2】:

您可以使用 Dict Comprehensions 实现此目的,如下所示:

x = [(k1, 400), (k1, 500), (k2, 600), (k2, 600), (k3, 600)]
dictionary = {k: v for k,v in x}
print(dictionary)

输出:

{'k1': 500, 'k2': 600, 'k3': 600}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-09-13
    • 2016-06-12
    • 1970-01-01
    • 2019-03-15
    • 2011-01-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多