2015-09-10 2 views
2

Мне было интересно, есть ли какая-либо структура данных в python, которая может выполнять мои требования.Сортировка по элементу структуры данных в python

У меня есть кортеж такого

(item1, item2, item3, count) 

Я хотел бы сортировать по количеству в порядке убывания. Есть ли какая-либо структура, которую я мог бы использовать в python для достижения этой цели? При необходимости элементы могут быть переупорядочены.

Да у меня есть список кортежей, которые будут выглядеть следующим образом выше

+0

Вы имеете в виду, что у вас есть список кортежей, где кортежи выглядят выше? –

+0

Вы имеете в виду - сортировка по индексам вроде 1 (item1), 2 (item2) ...? – wolendranh

+0

отсортировано (кортеж, обратное = истинное) это решит вашу проблему – Naveen

ответ

3

Если у вас есть список кортежей, где каждый кортеж выглядит как -

(item1, item2, item3, count) 

Затем вы можете использовать sorted() функцию с key аргумент и operator.itemgetter(3), чтобы получить 4-й элемент из кортежа для сортировки на основе, и reverse=True сортировать по убыванию. Пример -

import operator 
sorted(lst, key=operator.itemgetter(3),reverse=True) 

Вы также можете использовать operator.itemgetter(-1), если вы хотите получить последний элемент из кортежа.

1

sorted(tuple,reverse=True) должен решить вашу проблему

1

Данный список кортежей:

l = [(a1, b1, c1, count1), (a2, b2, c2, count2), ...] 

Вы можете просто сделать:

l.sort(key=lambda t: t[-1], reverse=True) 
1

Или использовать ваш старый друг лямбда:

l.sort(lambda x,y:cmp(y[3],x[3])) 

Wh «l» - это имя вашего списка.

1
>>> values = [ 
...  ('asdf', 'qwer', 'zxcv', 5), 
...  ('qwer', 'asdf', 'zxcv', 9), 
...  ('zxcv', 'qwer', 'asdf', 2) 
... ] 

>>> sorted(values, key=lambda value: value[3], reverse=True) 
[('qwer', 'asdf', 'zxcv', 9), 
('asdf', 'qwer', 'zxcv', 5), 
('zxcv', 'qwer', 'asdf', 2)] 
Смежные вопросы