python:访问键:值对的值部分中的多个值

时间:2010-07-08 21:18:04

标签: python dictionary key-value

我正在尝试对key:value对列表的值部分中的多个值执行计算。

所以我有类似的东西:
[('apples',['254','234','23','33']),('bananas',['732','28']),('squash',['3'' )]

我正在尝试创建一个y值列表,这些值是上述整数的平均值。

我想写的是以下伪代码 如果item [1]包含0个元素:
        ys.append(项目[1])
否则如果item [1]包含> 0个元素:
        加起来元素,除以元素数量
        ys.append平均数

我不知道该怎么做才能访问每个键值集中可能存在的所有值。

3 个答案:

答案 0 :(得分:2)

pairs是您的配对列表:

averages = [float(sum(values)) / len(values) for key, values in pairs]

将为您提供平均值列表。

如果您的数字是字符串,请参阅上面的sum(values) sum([int(i) for i in values])

编辑:如果你想要一本字典,那就是平均值列表:

averages = dict([(key, float(sum(values)) / len(values)) for key, values in pairs])

答案 1 :(得分:0)

ys = []
for k, v in items:
    avg = sum(map(float, v))/len(v)
    ys.append(v)

答案 2 :(得分:0)

您可以通过

找到列表的平均值
sum(float(i) for i in lst) / len(lst)

如果列表的元素是整数,则可以

float(sum(lst)) / len(lst)

但在您的示例中,它们是字符串,因此您必须转换它们。

在这种情况下,我实际上建议使用Python的列表解析工具来自动创建平均值列表。如果您的原始配对列表被命名为,fruit_list(我知道壁球不是水果,所以起诉我):

averages = [[] if len(values) == 0 else sum(float(i) for i in values)/len(values) for fruit, values in fruit_list]

虽然看起来有点奇怪,因为那时你会得到一个列表,其中一些元素是浮点数,其他元素是空列表。如果0中没有值,您确定不想使用[]代替item[1]吗?