【问题标题】:need max, min, avg value for duplicate keys in tuple, as well as count of keys [closed]需要元组中重复键的最大值、最小值、平均值,以及键的计数[关闭]
【发布时间】:2013-09-25 02:24:54
【问题描述】:

使用python,我试图弄清楚如何从元组对列表中提取唯一键,具有最高、最低和平均值,以及多少键的计数,例如这个列表:

[('a', 1), ('b', 3,), ('a', 9), ('b', 0), ('b', 9), ('a', 10), ('c', 2)]

我需要提取这些信息:

a: max = 10, min = 1, avg = 7 count = 3
b: max = 9, min = 0, avg = 4 count = 3
c: max = 2, min = 2, avg = 2, count = 1

【问题讨论】:

  • 为什么人们会因为这个问题而扣分?这有什么帮助。
  • 我已经研究了很多,但还没有找到我理解的解决方案。
  • 如果没有一些 cmets 可能就没有那么有用了,例如“到目前为止你尝试过什么?” - 如果您还发布您尝试过但遇到问题的代码,您将获得更好的答案和 cmets。否则,它听起来就像“有人请为我写这个”(你没有实际上问过,但没有任何发布的代码,这是一个可以理解的含义)。
  • 您可能希望指定您想要一个“四舍五入的平均值”。在“a”的情况下,您有 (10+9+1)/3 = 20/3 在 Python 中通常最终为 6 而不是 7。
  • 您可能想问一个问题。 StackOverflow 不是一个请求-响应站点,它不是一个支持论坛,它是一个问题-和-答案 站点。你问一个问题,其他读者回答。在您的帖子中没有问题,因此它不太适合问答格式。

标签: python list statistics tuples


【解决方案1】:

您可以使用defaultdict 来收集信息。

from collections import defaultdict

data = [('a', 1), ('b', 3,), ('a', 9), ('b', 0), ('b', 9), ('a', 10), ('c', 2)]

pool = defaultdict(list)
for key, value in data:
    pool[key].append(value)

print(pool)

您自己实现minmax和平均值(sum/len)的计算应该没有问题。

【讨论】:

  • 我们添加一个值,所以.append 是要走的路。使用 .extend 会给我们一个 TypeError。 (评论:这是对作者删除的评论的回答)
【解决方案2】:

您的目标看起来像一本字典。因此,以每个元组的第一个元素作为键来构建字典。遍历元组并为每个元组建立值。 你应该得到类似的结果:

tally = {'a': {'count': 3, 'max': 10, 'avg': 7, 'min': 1}, ... 等等}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-30
    • 2015-02-15
    • 2016-11-04
    • 2016-06-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多