我的数据看起来像这样:

我有一个清单

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

09-25 19:55