Как найти среднее значение элементов списка в словаре?

#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]