我的程序可以从文件中的字典输出每个学生的姓名和3个分数,但我需要按字母顺序对数据进行排序。如何根据姓氏按字母顺序对姓名和分数进行排序?
这是我的代码到目前为止: 进口泡菜
def clssa():
filename="friendlist.data"
f=open('Class6A.txt','rb')
storedlist = pickle.load(f)
for key, value in storedlist.items():
sorted (key), value in storedlist.items()
print (("{} --> {}").format(key, value))
答案 0 :(得分:4)
使用sorted关键字。
for key, value in sorted(storedlist.items()):
# etc
答案 1 :(得分:2)
字典不是有序的,因此您必须对键进行排序,然后访问字典:
for key in sorted(storedlist.iterkeys()):
print (("{} --> {}").format(key, storedlist[key]))
答案 2 :(得分:0)
要按学生的姓氏排序,首先必须从用作词典键的全名中提取。以下功能应该能够做到这一点:
def get_surname(full_name):
return full_name.split()[-1]
然后你可以迭代这样的字典内容:
for name in sorted(storedlist, key=get_surname):
print("{} --> {}".format(name, storedlist[name]))
还有一些提示:
在frq
函数中,您应该将skip
替换为pass
,这是一个有效的Python语句。
除了使用不同的输入文件名之外,您可以只编写一个函数,而不是定义几个函数(clssa
,clssb
,clssc
)。文件名作为参数(并赋予此函数更好的名称):
def print_scores(filename):
f = open(filename, 'rb')
storedlist = pickle.load(f)
...
在函数clssq
内,您将替换
if clss=='a':
clssa()
elif clss=='b':
clssb()
elif clss=='c':
clssc()
通过
filename = {'a': 'Class6A.txt',
'b': 'Class6B.txt',
'c': 'Class6C.txt'}[clss]
print_scores(filename)