Sorted()排序不正确

2024-09-28 20:48:28 发布

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

我正在使用的代码有一个列表,其中包含(moviename、year released、genre、watched或unwatched)。我试图按发布的年份对列表进行排序,但排序不正确

movielist.sort(key=lambda x: x[1])

这是我试图运行的代码,用于按年份对列表进行排序,但排序不正确

输出为:

['Citizen Kane', '1941', 'Drama', 'u']
['Star Wars: Episode IV - A New Hope', '1977', 'Action', 'w']
['The Fugitive', '1993', 'Drama', 'u']
['Fun with Dick and Jane', '2005', 'Comedy', 'w']
['Persian-Roman War', '557', 'Action', 'u']

什么时候应该是:

['Persian-Roman War', '557', 'Action', 'u']
['Citizen Kane', '1941', 'Drama', 'u']
['Star Wars: Episode IV - A New Hope', '1977', 'Action', 'w']
['The Fugitive', '1993', 'Drama', 'u']
['Fun with Dick and Jane', '2005', 'Comedy', 'w']

Tags: the代码列表new排序actionstar年份
2条回答

这里的问题是,你在一个文本年上排序,并且按字典顺序,年1941是“在”557之前”。您可以尝试用0填充年份,使其固定宽度为4:

movielist.sort(key=lambda x: x[1].zfill(4))

采用这种方法,对文本进行排序,并给出以下顺序:

0557
1941
1977
1993
2005

当你在做

movielist.sort(key=lambda x: x[1])

它基于字符串值进行排序,但在您的情况下不起作用

改用这个

movielist.sort(key=lambda x: int(x[1]))

希望这有帮助

相关问题 更多 >