如何根据“等级”中值的平均值对输入进行排序?这有效
data = [{ "ratings":[3,4,5,2,1,5], "budget":3, "box_office":5},{ "ratings":[1,1,3,4,5,6], "budget":4, "box_office":90},{ "ratings":[5,4,3,2,1.6], "budget":45, "box_office":55},{ "ratings":[3,2,4,2,3,4], "budget":89, "box_office":56}]
def average_rating(cname):
jim = cname['ratings']
average = sum(jim)/len(jim)
return average
def sort_by_average_rating(cname):
cname.sort(key = average_rating)
return cname
print(sort_by_average_rating(data))
答案 0 :(得分:3)
您可以使用statistics.mean
获得平均评分,并使用key
的sorted参数根据该平均值进行排序。评分。
list.sort()
和sorted()
都有一个关键参数,用于指定在进行比较之前在每个列表元素上要调用的函数。
from statistics import mean
data = [{ "ratings":[3,4,5,2,1,5], "budget":3, "box_office":5},{ "ratings":[1,1,3,4,5,6], "budget":4, "box_office":90},{ "ratings":[5,4,3,2,1.6], "budget":45, "box_office":55},{ "ratings":[3,2,4,2,3,4], "budget":89, "box_office":56}]
sorted(data,key=lambda x:mean(x['ratings']))
# [{'ratings': [3, 2, 4, 2, 3, 4], 'budget': 89, 'box_office': 56},
# {'ratings': [5, 4, 3, 2, 1.6], 'budget': 45, 'box_office': 55},
# {'ratings': [3, 4, 5, 2, 1, 5], 'budget': 3, 'box_office': 5},
# {'ratings': [1, 1, 3, 4, 5, 6], 'budget': 4, 'box_office': 90}]
答案 1 :(得分:1)
from statistics import mean
sorted(data, key=lambda x: mean(x['ratings']))
答案 2 :(得分:0)
from statistics import mean
data = [{ "ratings":[3,4,5,2,1,5], "budget":3, "box_office":5},{ "ratings":[1,1,3,4,5,6], "budget":4, "box_office":90},{ "ratings":[5,4,3,2,1.6], "budget":45, "box_office":55},{ "ratings":[3,2,4,2,3,4], "budget":89, "box_office":56}]
sorted(data, key=lambda x: mean(x['ratings']))
这应该有所帮助。