Python 如何按姓名/年龄分别对列表进行排序?
此外,如果我想按年龄对它们进行分类,我怎么能这样做呢? 我尝试了myFile.sort(),但它使代码崩溃 “对象没有“排序”属性” 重复问题:Python 如何按姓名/年龄分别对列表进行排序?,python,sorting,Python,Sorting,此外,如果我想按年龄对它们进行分类,我怎么能这样做呢? 我尝试了myFile.sort(),但它使代码崩溃 “对象没有“排序”属性” 重复问题: 请注意,只有变量中的列表将被排序,而不是文件。您必须先对列表进行排序,然后在第二次写入文件。因此代码现在分为两部分 fileName = "GuestList.csv" ACCESSMODE = "w" name = " " nbrGuest = " " nbrGuest = input("How many guests do you have?
请注意,只有变量中的列表将被排序,而不是文件。您必须先对列表进行排序,然后在第二次写入文件。因此代码现在分为两部分
fileName = "GuestList.csv"
ACCESSMODE = "w"
name = " "
nbrGuest = " "
nbrGuest = input("How many guests do you have? ")
guest_list = []
for index in range(int(nbrGuest)):
name = input("Enter guest name:\t").capitalize()
age = input("Enter guest age:\t")
guest_list.append((name, age))
guest_list.sort(key=lambda x: x[1])
with open(fileName, ACCESSMODE) as myFile:
for guest in guest_list:
myFile.write(guest[0] + "," + guest[1] + "\n")
第一部分接受用户输入并将所有信息存储在元组列表中。每个
元组
看起来像('ALEX','24')
。客人列表完成后,根据客人的年龄,使用.sort()
方法对其进行排序(最年轻的第一个,使用,reverse=True
颠倒顺序)。最后,排序后的名称和年龄将写入由with
语句管理的文件,这样您就不必担心关闭或刷新它。您必须先将它们存储在某种容器中,然后对它们进行排序,最后将它们写入文件。将它们写入文件后,您不能对它们进行排序。@RoadRunner,OP并没有打开现有文件:input
(两次)被使用,输入信息应该被存储。@RoadRunner它应该创建新文件,每次都从用户输入中创建一个新的名称列表。我只想按姓名或年龄对其进行排序,以便稍后我可以显示完整的列表。@Ev.Kounis好的,这很有意义,我只是在学习编码,你能告诉我怎么做吗?非常感谢你
import operator
sortedlist = sorted(reader, key=operator.itemgetter(3), reverse=True)
or use lambda
sortedlist = sorted(reader, key=lambda row: row[3], reverse=True)
fileName = "GuestList.csv"
ACCESSMODE = "w"
name = " "
nbrGuest = " "
nbrGuest = input("How many guests do you have? ")
guest_list = []
for index in range(int(nbrGuest)):
name = input("Enter guest name:\t").capitalize()
age = input("Enter guest age:\t")
guest_list.append((name, age))
guest_list.sort(key=lambda x: x[1])
with open(fileName, ACCESSMODE) as myFile:
for guest in guest_list:
myFile.write(guest[0] + "," + guest[1] + "\n")