Python 按字母顺序排序
我的程序可以输出每个学生的名字和他们的3分,但我需要按字母顺序对数据进行排序。如何根据姓氏按字母顺序排列姓名和分数 这是我目前的代码: 进口泡菜Python 按字母顺序排序,python,sorting,dictionary,Python,Sorting,Dictionary,我的程序可以输出每个学生的名字和他们的3分,但我需要按字母顺序对数据进行排序。如何根据姓氏按字母顺序排列姓名和分数 这是我目前的代码: 进口泡菜 def clssa(): filename="friendlist.data" f=open('Class6A.txt','rb') storedlist = pickle.load(f) for key, value in storedlist.items(): sorted (key), value
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))
字典没有排序,因此您必须对键进行排序,然后访问字典:
for key in sorted(storedlist.iterkeys()):
print (("{} --> {}").format(key, storedlist[key]))
使用排序关键字
for key, value in sorted(storedlist.items()):
# etc
要按学生的姓氏排序,首先必须从用作字典键的全名中提取姓氏。以下功能应能够做到这一点:
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
),只需编写一个函数,将文件名作为参数(并为该函数提供更好的名称):
在函数clssq
中,您将替换
if clss=='a':
clssa()
elif clss=='b':
clssb()
elif clss=='c':
clssc()
借
姓氏是
键吗
?我所看到的方法都需要字典名:你有字典名:storedlist
@Oh-right抱歉,python新手哈哈,是的,名字和姓氏是键,SAM White你能给我们看几行你的程序生成的输出吗?这样我们就可以看到字典的内容了好的,你回答说我不同意这是一个重复的问题。这个问题包括按姓氏对数据进行排序,这在链接的问题中以及这里的大多数答案中都没有提到。您可以使用“for key,value in sorted(storedlist.interitems())”使其更简单
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)