我的表格中有一本字典:
{"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
答案 0 :(得分: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。