如何按主要评级值的平均值对字典列表进行排序?不使用进口

时间:2020-04-21 19:12:09

标签: python python-3.x list sorting dictionary

如何根据“等级”中值的平均值对输入进行排序?这有效

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))

3 个答案:

答案 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']))

这应该有所帮助。