首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何按照Python中的姓氏对从txt文件导入的名称列表进行排序

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

Stack Overflow用户
提问于 2020-04-17 11:54:06
回答 2查看 701关注 0票数 3

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

代码语言:javascript
复制
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]))

输入:

代码语言:javascript
复制
Jeremy Underwood, Louis Malone, Jett Obrien, Lee Cordova, Avery Hill, Amanda Fowler, Callum Ferguson, Hallie Clark, Branson Calhoun

输出:

代码语言:javascript
复制
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弗格森‘,'Amanda Fowler','Avery Hill','Louis Malone','Jett Obrien','Jeremy Underwood'

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-04-17 11:58:39

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

代码语言:javascript
复制
f = open('namenlijst.txt', 'r')
studenten = f.read()
f.close()
studenten1 = studenten.split(",")

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

你有你想要的输出:

代码语言:javascript
复制
[' Branson Calhoun', ' Hallie Clark', ' Lee Cordova', ' Callum Ferguson', ' Amanda Fowler', ' Avery Hill', ' Louis Malone', ' Jett Obrien', 'Jeremy Underwood']
票数 3
EN

Stack Overflow用户

发布于 2020-04-17 12:03:46

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61271011

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档