2015-04-15 5 views
0

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

sorted(tupList, key = lambda tup: tup[1]) 

Я также попытался

sorted(tupList, key = itemgetter(1)) 
'''i imported itemgetter, attrgetter, methodcaller from operator''' 

но список был возвращен тот же оба раза. Я проверил

sorting tuples in python with a custom key

sort tuples in lists in python

https://wiki.python.org/moin/HowTo/Sorting

+7

Напоминание: вызов 'sorted' в списке не изменяет исходный список. Если вы делаете 'sorted (seq); print (seq); ', то вы не увидите никаких изменений. Убедитесь, что вы выполняете 'new_thing = sorted (seq); print (new_thing) 'или аналогичный. – Kevin

+0

o_O Ваш код кажется мне хорошим. Показывать ввод и ожидаемый результат? – Shashank

+2

Можете ли вы предоставить список примеров, который вызывает проблему? – TheBlackCat

ответ

1

Я предполагаю, что вы звоните sorted, но не назначая результат в любом месте. Что-то вроде:

tupList = [(2,16), (4, 42), (3, 23)] 
sorted(tupList, key = lambda tup: tup[1]) 
print(tupList) 

sorted создает новый отсортированный список, а не изменяя оригинал. Попробуйте:

tupList = [(2,16), (4, 42), (3, 23)] 
tupList = sorted(tupList, key = lambda tup: tup[1]) 
print(tupList) 

Или:

tupList = [(2,16), (4, 42), (3, 23)] 
tupList.sort(key = lambda tup: tup[1]) 
print(tupList) 
Смежные вопросы