python查找特定的元素位置,并返回其前面的所有不同元素



我有一个python列表:

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

a中,我想找到a的前2个不同元素,它按第二个元素排序,意思是:

第一:我对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'](?

使用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时,需要重新格式化元组的元素结构

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']

最新更新