2012-08-07 3 views
4

Моя структура данных представляет собой список кортежей в Python, и я хотел бы иметь возможность сортировать элементы списка по значению, содержащемуся в их кортежах. В PHP я обычно создавал свою собственную функцию сортировки с помощью функции usort(). Есть ли эквивалент в Python, который я мог бы использовать?эквивалент Python для usort()?

+4

Используйте 'sort()'. Он принимает аргумент 'key'; см. руководство. – geoffspear

ответ

7

Дайте метод sort() в key функции:

>>> my_list = [(1, 2), (3, 4), (2, 1), (3, 2)] 
>>> my_list.sort(key=lambda x: x[1]) 
>>> my_list 
[(2, 1), (1, 2), (3, 2), (3, 4)] 
>>> 

Если вам нужно получить отсортированный список, вместо сортировки вместо используйте built_in sorted()

>>> sorted(my_list, key=lambda x: x[1]) 
[(2, 1), (1, 2), (3, 2), (3, 4)] 
3

Существует нет чтобы сделать это, но это можно сделать довольно легко, используя operator module functions в качестве ключевой функции для сортировки. Как показывает пример кода, вы можете использовать

from operator import itemgetter 

tuple_list.sort(key=itemgetter(1)) 

Это будет сортировать по индексу 1 элемент в кортежах.

Смежные вопросы