2015-09-18 3 views
1

В настоящее время я пытаюсь сортировать список, такой как следующее. Мне нужно отсортировать списки по порядку второго элемента в каждом под-списке.Python Сортировка списка списков

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

Для полноты вам следует опубликовать вывод, который вы получаете. – juanchopanza

ответ

11

Вы должны преобразовать второй элемент в целое число первой сортировки:

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

Может может помочь вам.