Skip to main content
 首页 » 编程设计

python之按字母顺序排列 Python 中的多行值列表

2025年05月04日18jillzhang

我有一个按以下格式组织的姓名和地址列表:

Mr and Mrs Jane Doe   
Candycane Lane   
Magic Meadows, SC  

我有几个这样写的数据 block ,我希望能够按姓氏(在本例中为 Doe)按字母顺序排列每个 block 。在做了一些挖掘之后,我能想到的最好的办法是我需要制作一个“列表列表”,然后使用姓氏作为按字母顺序排列 block 的键。然而,鉴于对 python 的新鲜感和缺乏谷歌技能,我能找到的最接近的是 this .我对将每个 block 转换为列表然后对其进行切片感到困惑;我似乎无法找到一种方法来做到这一点,但仍然能够正确地按字母顺序排列。非常感谢任何和所有指导。

请您参考如下方法:

如果我理解正确的话,您基本上想要的是通过“对值进行的一些计算”对值进行排序,在本例中是提取的姓氏。

为此,使用 .sort() 或 sorted() 的 key 关键字参数:

def my_key_function(original_name): 
    ## do something to extract the last name, for example: 
    try: 
        return original_name.split(',')[1].strip() 
    except IndexError: 
        return original_name 
 
my_sorted_values = sorted(my_original_values, key=my_key_function) 

唯一的要求是您的“关键”函数是确定性的,即始终为每个给定输入返回相同的输出。

您可能还想按姓氏然后按名字排序:在这种情况下,只需返回一个元组 (last, first):如果 last 相同对于两个给定的项目,first 将用于进一步对两者进行排序。

更新

对于您的具体情况,此函数应该可以解决问题:

def my_key_function(original_name): 
    return original_name.splitlines()[0].split()[-1]