Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 按字母顺序排序_Python_Sorting_Dictionary - Fatal编程技术网

Python 按字母顺序排序

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

我的程序可以输出每个学生的名字和他们的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))

字典没有排序,因此您必须对键进行排序,然后访问字典:

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)