我正在使用的代码具有包含(电影名称,发行年份,类型,观看或未观看)的列表列表。我试图按发布的年份对列表进行排序,但是排序不正确
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']
答案 0 :(得分:3)
做事的时候
movielist.sort(key=lambda x: x[1])
它根据无法使用的字符串值进行排序
改为使用此
movielist.sort(key=lambda x: int(x[1]))
希望有帮助
答案 1 :(得分:0)
这里的问题是,您正在对 text 年进行排序,并且按字典顺序,年1941
在557
之前。您可以尝试用零将年份填充到固定宽度4:
movielist.sort(key=lambda x: x[1].zfill(4))
使用这种方法,可以对文本年份进行排序,并且会给出以下顺序:
0557
1941
1977
1993
2005