我的数据看起来像这样:
我有一个清单
d = [(0, [(1, 0.15122674), (2, 0.59446937), (3, 0.06613562), (4, 0.1877523)]),
(1, [(1, 0.46739018), (4, 0.5283537)]),
(2, [(1, 0.99668014)])]
我想要一个输出:
[(0, [(2, 0.59446937)]),
(1, [(4, 0.5283537)]),
(2, [(1, 0.99668014)])]
我们取最大值的地方,查看这些元组的第二个值。
我不太确定从哪里开始,因为我是python初学者。我了解这是否是一个简单的元组列表,我们可以执行以下操作:
max(d,key=lambda x:x[1])
但鉴于我的数据结构,我不太确定该如何做...
最佳答案
您可以使用列表推导和operator.itemgetter
使其更容易:
In [9]: from operator import itemgetter
In [10]: [(i, max(j, key=itemgetter(1))) for i, j in d]
Out[10]: [(0, (2, 0.59446937)), (1, (4, 0.5283537)), (2, (1, 0.99668014))]