python找到特定的元素位置并返回i前面的所有不同元素

2024-04-26 11:18:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个python列表:

a = [('x',3.6),('x',5.2),('y',4.5),('x',1.4),('y',2.1),('z',3.3)]

a中,我想找到a的top2 distinct元素,它按第二个元素排序,这意味着:

第一:我排序a

b = sorted(a, key=lambda x: x[1],reverse=True)

b: [('x', 5.2), ('x', 3.6), ('y', 3.5), ('z', 3.3), ('y', 2.1), ('x', 1.4)]

第二:在排序后的b中,我需要得到两个不同的元素,结果可能是:['x', 'y'],如何才能整齐地得到这个结果?你知道吗

添加:

如果我有清单:

a = [('x',3.6, 'xx1'),('x',5.2, 'xx2'),('y',4.5, 'xx1'),('x',1.4, 'xx3'),('y',2.1, 'xx1'),('z',3.3, 'xx2')]

b

b = sorted(a, key=lambda x: x[1], reverse=True)

我怎样才能得到a的前2个不同元素(结果可能是['x', 'y'])?你知道吗


Tags: lambdakeytrue元素列表排序reversesorted
1条回答
网友
1楼 · 发布于 2024-04-26 11:18:54

使用OrderedDict并获取其键的前2个元素

from collections import OrderedDict
list(OrderedDict(sorted(a, key=lambda x: x[1], reverse=True)).keys())[:2]
Out[7]: ['x', 'y']

对于a的每个项中的更多元素,在以(key, (item1, item2, ...))格式构建OrderedDict时需要重新格式化tuple元素的结构

list(OrderedDict([(x[0], (x[1], x[2]) )for x in sorted(a, key=lambda x: x[1], reverse=True)]))[:2]
Out[10]: ['x', 'y']

相关问题 更多 >