字典中元组的第一项的平均值

问题描述 投票:5回答:1

我有一个字典,形式:

{"a": (1, 0.1), "b": (2, 0.2), ...}

每个元组对应于(得分,标准差)。如何获取每个元组中第一个整数的平均值?我已经试过了:

for word in d:
    (score, std) = d[word]
    d[word]=float(score),float(std)
    if word in string:
        number = len(string)
        v = sum(score)
        return (v) / number

收到此错误:

    v = sum(score)
TypeError: 'int' object is not iterable
python list dictionary tuples average
1个回答
7
投票

使用list comprehensions很容易做到。首先,您可以从d.values()中获取所有词典值。要仅列出每个值中的第一项,请创建一个类似于[v[0] for v in d.values()]的列表。然后,将这些元素的总和除以字典中的项目数即可:

sum([v[0] for v in d.values()]) / float(len(d))

正如Pedro正确指出的那样,这实际上创建了列表,然后求和。如果您有一个庞大的字典,这可能会占用大量内存并且效率很低,因此您需要generator expression而不是列表推导。在这种情况下,这仅意味着摆脱一对括号:

sum(v[0] for v in d.values()) / float(len(d))

比较这两种方法in another question

© www.soinside.com 2019 - 2024. All rights reserved.