Stack Overflow на русском Asked on November 10, 2021
Нужно написать функцию age_count, которая принимает json-строку следующего вида:
{
"workers": [
{"name": "Имя1", "age": 34, "occupation": "Программист"},
{"name": "Имя2", "age": 24, "occupation": "Программист"},
{"name": "Имя3", "age": 40, "occupation": "Грузчик"}
]
}
Далее в функции нужно посчитать средний возраст по каждой из профессий и сохранить в файл age.json этот возраст в следующем виде:
{
"Программист": 29.0,
"Грузчик": 40.0
}
Также результирующий json должен быть выведен на экран в конце выполнения функции.
Вот тут я перевёл json-строку и получаю словарь, который имеет один ключ и одно значение, но в значение список из словарей.
import json
def age_count(x):
x = json.loads('{ "workers": [{"name": "Имя1", "age": 34, "occupation": "Программист"}, {"name": "Имя2", "age": 24, "occupation": "Программист"}, {"name": "Имя3", "age": 40, "occupation": "Грузчик"} ] }')
Как найти среднее значение в списке из разных словарей?
Думал попробовать сделать, так
if x[1][occupation] == "Программист":
m_sum = sum(x[1][age].values)/len(x[1][age])
Но не уверен что это правильно.
import json def age_count(x):
s = ('{ "workers": [{"name": "Имя1", "age": 34, "occupation": "Программист"}, {"name": "Имя2", "age": 24, "occupation": "Программист"}, {"name": "Имя3", "age": 40, "occupation": "Грузчик"} ] }')
r = {}
for x in json.loads(s)['workers'] :
r.setdefault(x["occupation"],[]).append(x["age"])
for x in r.keys() :
r[x] = sum(r[x])/len(r[x])
print(r)
with open("input.txt") as f: age_count(f.read())
Answered by Andrey on November 10, 2021
s ='''
{
"workers": [
{"name": "Имя1", "age": 34, "occupation": "Программист"},
{"name": "Имя2", "age": 24, "occupation": "Программист"},
{"name": "Имя3", "age": 40, "occupation": "Грузчик"}
]
}
'''
import json
r = {}
for x in json.loads(s)['workers'] :
r.setdefault(x["occupation"],[]).append(x["age"])
for x in r.keys() :
r[x] = sum(r[x])/len(r[x])
print(r)
Answered by splash58 on November 10, 2021
Get help from others!
Recent Questions
Recent Answers
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP