Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/304.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.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 - Fatal编程技术网

Python 如何按姓名/年龄分别对列表进行排序?

Python 如何按姓名/年龄分别对列表进行排序?,python,sorting,Python,Sorting,此外,如果我想按年龄对它们进行分类,我怎么能这样做呢? 我尝试了myFile.sort(),但它使代码崩溃 “对象没有“排序”属性” 重复问题: 请注意,只有变量中的列表将被排序,而不是文件。您必须先对列表进行排序,然后在第二次写入文件。因此代码现在分为两部分 fileName = "GuestList.csv" ACCESSMODE = "w" name = " " nbrGuest = " " nbrGuest = input("How many guests do you have?

此外,如果我想按年龄对它们进行分类,我怎么能这样做呢? 我尝试了myFile.sort(),但它使代码崩溃 “对象没有“排序”属性”

重复问题:


请注意,只有变量中的列表将被排序,而不是文件。您必须先对列表进行排序,然后在第二次写入文件。

因此代码现在分为两部分

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")