对name和float的dict进行排序



我不知道问题出在哪里。这段代码不对dict进行排序。这是带有名称的csv文件的平均值。

import collections
import csv
from statistics import mean
from typing import OrderedDict
import operator
with open("mark.csv") as marks:
reader=csv.reader(marks)
for row in reader:
list_marks=list()
name=row[0]
for grade in row[1:]:
list_marks.append(float(grade))
avg=mean(list_marks)
dict_list={name:avg}
res=sorted(dict_list.items(),key=lambda item:(item[1],item[0]))
print(res)

右侧。你的主要问题是压痕。在你得到所有成绩之前,你无法计算平均值,而你正试图为每个成绩计算平均值。正如@Grismar所指出的,你在每个内部循环中创建一个新的字典,而不是向现有的字典添加一个值。

像这样的事情表明了你想要什么。

import csv
from statistics import mean
with open("mark.csv") as marks:
reader=csv.reader(marks)
dict_list = {}
for row in reader:
name=row[0]
avg=mean(float(grade) for grade in row[1:])
dict_list[name]=avg
res=sorted(dict_list.items(),key=lambda item:(item[1],item[0]))
print(res)

最新更新