无法根据JSON数组计算平均值

时间:2018-10-26 18:40:10

标签: python json loops

我有一个for循环,该循环解析JSON数组并返回一个字符串值列表,该字符串值的小数点后一位。我已经将这些字符串转换为int值,并转换为浮点数:

video.play().then(() =>
    setTimeout(() => {
        console.log(video.webkitAudioDecodedByteCount); // never reached
        video.pause();
    }, 100))
setTimeout(() => {
    console.log(video.webkitAudioDecodedByteCount); // always 0
    console.log("video did not load"); // always reached
}, 10000);

这些是返回的转换后的int值:

result = requests.get(url) raw = result.json() print (Fore.YELLOW + "\nMost Recent Sold Listings: \n" + Fore.GREEN) for item in (raw["findCompletedItemsResponse"][0]["searchResult"][0 ["item"]): price = item["sellingStatus"][0]["convertedCurrentPrice"][0]['__value__'] int_price = int(float(price)) print (int_price) 538 610 626 650 726 800 829 835 {{ 1}} 843 870 950

我试图调用sum()函数将所有这些int值相加,然后除以len:

960

但是,我收到一条错误消息“ 发生了异常:TypeError “ int”对象不可迭代

目标是创建返回值的平均值。我在做什么错了?

1 个答案:

答案 0 :(得分:1)

根据docs,sum()和len()是内置的,它们期望可迭代。本质上是可迭代的,您可以在其上迭代列表,字符串等。

  

可迭代对象是具有 iter 方法的对象,该方法返回   迭代器,或定义可以采用的 getitem 方法   从零开始的连续索引(并在以下情况时引发IndexError   索引不再有效)。所以一个可迭代的对象   可以从中获得迭代器。

sum()

  

总和从左到右开始并迭代一个项目,然后返回   总数。开始默认为0。可迭代项通常是   数字,并且起始值不允许为字符串。

len()

  

返回对象的长度(项目数)。该论点可能   是一个序列(例如字符串,字节,元组,列表或范围)或   集合(例如字典,集合或冻结集合)。

另一方面,

整数不是可迭代的,它由单个值组成。为了解决问题,您可以创建一个新列表 为了便于计算,并且在迭代json值时,将int / float值附加到此列表中。

new_list=[]

for循环中

int_price = int(price)
new_list.append(int_price)

现在您应该能够计算平均值

sum(new_list) / float(len(new_list)) # float conversion to get the final result as floats