如何在Python中按姓氏对从txt文件导入的名称列表进行排序

2024-05-19 01:05:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我今天刚刚安装了Python,我想按姓氏对从文本文件导入的名称列表进行排序。txt文件中的每个名称都由逗号和空格分隔。我之所以经常使用打印,是因为我想遵循每一步,看看哪里出了问题。 起初,它只是返回了我输入的同一组名称,我认为这是因为名称周围没有撇号。所以我加入了studenten1来解决这个问题

f = open('namenlijst.txt', 'r')
studenten = f.read()
f.close()
print(studenten)

studenten1 = "'" + studenten.replace(", ", "', '") + "'"
print (studenten1)

print(sorted(studenten1, key=lambda x: x.split(",")[-1]))

输入:

Jeremy Underwood, Louis Malone, Jett Obrien, Lee Cordova, Avery Hill, Amanda Fowler, Callum Ferguson, Hallie Clark, Branson Calhoun

输出:

Jeremy Underwood, Louis Malone, Jett Obrien, Lee Cordova, Avery Hill, Amanda Fowler, Callum Ferguson, Hallie Clark, Branson Calhoun

'Jeremy Underwood', 'Louis Malone', 'Jett Obrien', 'Lee Cordova', 'Avery Hill', 'Amanda Fowler', 'Callum Ferguson', 'Hallie Clark', 'Branson Calhoun'

[',', ',', ',', ',', ',', ',', ',', ',', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', "'", "'", "'", "'", "'", "'", "'", "'", "'", "'", "'", "'", "'", "'", "'", "'", "'", "'", 'A', 'A', 'B', 'C', 'C', 'C', 'C', 'F', 'F', 'H', 'H', 'J', 'J', 'L', 'L', 'M', 'O', 'U', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'b', 'd', 'd', 'd', 'd', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'g', 'h', 'i', 'i', 'i', 'i', 'k', 'l', 'l', 'l', 'l', 'l', 'l', 'l', 'l', 'l', 'l', 'm', 'm', 'm', 'n', 'n', 'n', 'n', 'n', 'n', 'n', 'n', 'o', 'o', 'o', 'o', 'o', 'o', 'o', 'o', 'o', 'o', 'r', 'r', 'r', 'r', 'r', 'r', 'r', 'r', 'r', 's', 's', 's', 't', 't', 'u', 'u', 'u', 'u', 'v', 'v', 'w', 'w', 'y', 'y']

预期产出:

'Branson Calhoun', 'Hallie Clark', 'Lee Cordova', 'Callum Ferguson', 'Amanda Fowler', 'Avery Hill', 'Louis Malone', 'Jett Obrien', 'Jeremy Underwood'


Tags: 名称malonejeremyleelouishillcordovafowler
2条回答

当您使用read时,输出是一个字符串,您可以使用split方法在列表中转换输入:

f = open('namenlijst.txt', 'r')
studenten = f.read()
f.close()
studenten1 = studenten.split(",")

print(sorted(studenten1, key=lambda x: x.split()[-1]))

您已经获得了所需的输出:

[' Branson Calhoun', ' Hallie Clark', ' Lee Cordova', ' Callum Ferguson', ' Amanda Fowler', ' Avery Hill', ' Louis Malone', ' Jett Obrien', 'Jeremy Underwood']

f.read()是一个字符串,因此您的输出对包含所有名称的单个字符串进行排序。您将需要执行f.read().split(',')而不是将输出放入列表中(假设所有条目都在您编写的单行上)

相关问题 更多 >

    热门问题