В вашем сообщении об ошибке говорится, что у вас есть следующий список словарей:
L = [{'ratings': [9, 10, 2, 3, 8, 10, 9], 'budget': 16219606.11, 'box_office': 13297812},
{'ratings': [6, 3, 1, 7, 9, 2], 'budget': 12995254.35, 'box_office': 26409035}]
Вы можете просто использовать sorted
с пользовательской функцией key
:
res = sorted(L, key=lambda x: sum(x['ratings']) / len(x['ratings']))
[{'box_office': 26409035, 'budget': 12995254.35, 'ratings': [6, 3, 1, 7, 9, 2]},
{'box_office': 13297812, 'budget': 16219606.11, 'ratings': [9, 10, 2, 3, 8, 10, 9]}]
Как вариант, выможно использовать statistics.mean
:
from statistics import mean
res = sorted(L, key=lambda x: mean(x['ratings']))
Обратите внимание, что функция lambda
принимает каждый элемент в вашей итерации (L
), а не весь список словарей (как в вашей текущей попытке).