Невозможно рассчитать среднее из массива JSON - PullRequest
0 голосов
/ 26 октября 2018

У меня есть цикл for, который анализирует массив JSON и возвращает список строковых значений с одним десятичным знаком. Я преобразовал эти строки в значения типа 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)

Это преобразованные значения int, которые он возвращает:

538 610 626 650 726 800 829 835 843 870 950 960 980

Я пытаюсь вызвать функцию sum (), чтобы сложить все эти значения int вместе и затем разделить на len:

sum(int_price) / len(int_price)

Однако я получаю сообщение об ошибке " Произошло исключение: TypeError Объект 'int' не повторяется"

Цель состоит в том, чтобы создать среднее значение возвращаемых значений. Что я делаю не так?

1 Ответ

0 голосов
/ 26 октября 2018

В соответствии с документами встроены sum () и len (), которые ожидают итераций. Итерируемый - это, по сути, итерации, такие как список, строка и т. Д.

Итеративный объект - это объект, который имеет метод iter , который возвращает итератор, или который определяет метод getitem , который может принимать последовательные индексы, начинающиеся с нуля (и вызывают IndexError, когда индексы больше не действительны). Таким образом, итеративный это объект, который вы можно получить итератор от.

сумма ()

Суммы начинаются и элементы итерируются слева направо и возвращаются Общая. start по умолчанию равно 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...