#python #list #dictionary #data-structures
#питон #Список #словарь #структуры данных
Вопрос:
sweets = {'cadbury': [180,90], 'candy': [190], 'milk chocolate': [150, 160], 'dark chocolate': [100], 'white chocolate': [180], 'ice cream': [122]}
Диктант имеет разные пары ключей и значений списка. Я хотел бы получить вашу помощь в поиске среднего значения чисел в списке значений и вернуть ключ с самым высоким средним значением в качестве выходного
Ответ №1:
Вы можете использовать statistics.mean
для вычисления среднего значения и max
с помощью пользовательского ключа получить ключ с максимальным средним значением:
sweets = {'cadbury': [180,90], 'candy': [190], 'milk chocolate': [150, 160], 'dark chocolate': [100], 'white chocolate': [180], 'ice cream': [122]} from statistics import mean max(sweets, key=lambda x: mean(sweets[x]))
Выход: 'candy'
Комментарии:
1. Я не знал, что вы можете использовать max в диктанте с ключом — хорошее решение!
2. @SteveMayne Вы можете использовать
max
на любой итерации. Дикт можно повторять, и повторениеd
диктанта более или менее эквивалентно повторениюd.keys()
.
Ответ №2:
Используя numpy, вы могли бы попробовать:
d = {x:np.mean(sweets[x]) for x in sweets}
Возвращающийся:
{'cadbury': 135.0, 'candy': 190.0, 'dark chocolate': 100.0, 'ice cream': 122.0, 'milk chocolate': 155.0, 'white chocolate': 180.0}
И чтобы получить ключ:
max(d, key=d.get)
Возвращающийся:
'candy'
Комментарии:
1. Вы можете использовать sweets.items (), чтобы не вызывать sweet[x] каждый раз.
Ответ №3:
Напишите цикл for для итерации всех ключевых значений в dict. Затем напишите внутренний цикл для вычисления среднего значения для каждого ключа. Сначала нужно установить максимальное среднее значение на минимальное значение с плавающей запятой, затем, если значение больше минимального значения, установите его как максимальное среднее значение, пока цикл не закончится.
Ответ №4:
Вы также можете сделать:
out = max(sweets.items(), key=lambda x: (sum(x[1])/len(x[1]) if x[1] else 0))[0]