Sorted()排序不正确

时间:2019-12-02 07:03:58

标签: python sorting

我正在使用的代码具有包含(电影名称,发行年份,类型,观看或未观看)的列表列表。我试图按发布的年份对列表进行排序,但是排序不正确

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']

2 个答案:

答案 0 :(得分:3)

做事的时候

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

它根据无法使用的字符串值进行排序

改为使用此

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

希望有帮助

答案 1 :(得分:0)

这里的问题是,您正在对 text 年进行排序,并且按字典顺序,年1941557之前。您可以尝试用零将年份填充到固定宽度4:

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

使用这种方法,可以对文本年份进行排序,并且会给出以下顺序:

0557
1941
1977
1993
2005