如何按给定索引处的元素对列表/元组进行排序(列表/元组)?

我在列表列表或元组列表中都有一些数据,以下所示: python

data = [[1,2,3], [4,5,6], [7,8,9]]
data = [(1,2,3), (4,5,6), (7,8,9)]

我想按子集中的第二个元素排序。 意思是,按2,5,8排序,其中2来自(1,2,3)5来自(4,5,6) 。 常见的作法是什么? 我应该在列表中存储元组或列表吗? 数组


#1楼

from operator import itemgetter
data.sort(key=itemgetter(1))

#2楼

对元组进行排序很是简单: spa

tuple(sorted(t))

#3楼

若是您想将数组从高到低排序,我只想添加到Stephen的答案中,除了上面的注释中的另外一种方法就是将其添加到行中: code

reverse = True

结果将以下所示: 排序

data.sort(key=lambda tup: tup[1], reverse=True)

#4楼

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

要么: get

data.sort(key=lambda tup: tup[1])  # sorts in place

#5楼

斯蒂芬的答案就是我会用的答案 。 为了完整起见,这是带有列表推导的DSU(装饰-排序-取消装饰)模式: it

decorated = [(tup[1], tup) for tup in data]
decorated.sort()
undecorated = [tup for second, tup in decorated]

或者,更简洁地说: io

[b for a,b in sorted((tup[1], tup) for tup in data)]

Python Sorting HowTo中所述 ,自Python 2.4启用关键功能以来,就没有必要这样作import

相关文章
相关标签/搜索