Python对列表列表进行排序

时间:2015-09-18 07:53:26

标签: python python-2.7 sorting sorted

我目前正在尝试对列表进行排序,例如以下内容。我需要按照每个子列表中的第二个元素的顺序对列表进行排序。

chars = [['Andrew', '1'], ['James', '12'], ['Sam', '123'], ['Zane', '2']]

我目前正在使用此命令:

chars = sorted(chars, key=itemgetter(1))

我的理想输出是:

chars = [['Andrew', '1'], ['Zane', '2'], ['James', '12'], ['Sam', '123']]

2 个答案:

答案 0 :(得分:10)

您需要先将第二个元素转换为整数才能进行排序:

>>> sorted(chars, key=lambda x: int(x[1]))
[['Andrew', '1'], ['Zane', '2'], ['James', '12'], ['Sam', '123']]

如果您想使用operator.itemgetter

进行此操作
>>> sorted(chars, key=lambda x: int(itemgetter(1)(x)))
[['Andrew', '1'], ['Zane', '2'], ['James', '12'], ['Sam', '123']]

答案 1 :(得分:0)

def myCmp(x, y):
    if int(x[1])>int(y[1]):
        return 1
    else:
        return -1

chars.sort(cmp=myCmp)#chars.sort(key=lambda x:int(x[1]))

print chars

输出:

[['Andrew', '1'], ['Zane', '2'], ['James', '12'], ['Sam', '123']]

也许可以帮到你。