5 回答
TA贡献1936条经验 获得超6个赞
此代码迭代并打印列表中的每个元素。相反,通过与平均值max比较来执行列表。
最大(可迭代,*,默认=无,键=功能)
这是一个列表理解的解决方案。
def get_all_time_max_avg_score(dictionary_list):
text = "Mr. {name} with age(years) {age} get the highest average scores, {average:.2f}"
def average(element):
return sum(element['test_scores']) / len(element['test_scores'])
e = max((element for element in dictionary_list), key=average, default=0)
return text.format(name=e['name'], age=e['age'], average=average(e))
print(get_all_time_max_avg_score(array_of_dictionaries))
输出:
Mr. Budi with age(years) 23 get the highest average scores, 95.67
TA贡献1848条经验 获得超6个赞
在打印任何内容之前,您需要计算每一项的平均值
def get_all_time_max_avg_score(dictionary_list):
for element in dictionary_list:
lensum = len(element['test_scores'])
elesum = sum(element['test_scores'])
element['mean'] = elesum / lensum
first = sorted(dictionary_list, key=lambda x: x['mean'], reverse=True)[0]
print("Mr.", first['name'], "with age(years)", first['age'], "get the highest average scores,",
round(first['mean'], 2))
或者使用Dataframe
def get_all_time_max_avg_score(dictionary_list):
df = pd.DataFrame(dictionary_list)
df['mean'] = df['test_scores'].apply(np.mean)
first = df.loc[df['mean'].idxmax()]
print("Mr.", first['name'], "with age(years)", first['age'],
"get the highest average scores,", round(first['mean'], 2))
TA贡献1828条经验 获得超6个赞
使用带有自定义键的内置max函数来找出平均分数最高的条目。
array_of_dictionaries = [{
"name": "Budi",
"age": 23,
"test_scores": [100.0, 98.0, 89.0]
},
{
"name": "Charlie",
"age": 24,
"test_scores": [90.0, 100.0]
}]
all_time_max_avg_score = max(
array_of_dictionaries,
key=lambda d: sum(d['test_scores']) / len(d['test_scores'])
)
meansum = sum(all_time_max_avg_score['test_scores']) / len(all_time_max_avg_score['test_scores'])
print("Mr. " + str(all_time_max_avg_score['name']) + " with age(years) " + str(all_time_max_avg_score['age']) + " get the highest average scores, " + str(round(meansum, 2)))
TA贡献1744条经验 获得超4个赞
收集所有名称的平均值并选择最大值
def get_all_time_max_avg_score(dictionary_list):
means = []
for d in dictionary_list:
means.append(sum(d['test_scores']) / len(d['test_scores']))
maxmean = max(means)
winner = dictionary_list[means.index(maxmean)]
print(
f'Mr. {winner["name"]}, with {winner["age"]} years of age, has the ' +
f'highest average scores: {maxmean:.2f}'
)
get_all_time_max_avg_score(array_of_dictionaries)
输出
Mr. Budi, with 23 years of age, has the highest average scores: 95.67
TA贡献1951条经验 获得超3个赞
通过一些额外的循环,您可以确定具有最大平均值的人
def get_all_time_max_avg_score(dictionary_list):
maxPersonIndex=0
maxAver=0
index=0
for element in dictionary_list:
lensum = len(element['test_scores'])
elesum = sum(element['test_scores'])
meansum = elesum / lensum
if(meansum>maxAver):
maxAver=meansum
maxPersonIndex=index
index+=1
for attribute in dictionary_list[maxPersonIndex].keys():
print("Mr. " + str(element['name']) + " with age(years) " + str(element['age']) + " get the highest average scores, " + str(round(meansum, 2)))
break
get_all_time_max_avg_score(array_of_dictionaries)
添加回答
举报