我有一个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']