首页 > 解决方案 > 在字典中保存特定列的最大值

问题描述

我有一个以字典结尾的 for 循环:

print("A: {0}, B: {2}, C: {1}".format(k,score,n_clusters))

A: -11.88, B: 8, C: 0.0548
A: -10.79, B: 76, C: 0.0049
A: -6.167, B: 57, C: -0.0018
A: -2.569, B: 94, C: -0.0062
A: -1.667, B: 2, C: 0.3269 # same value
A: -1.356, B: 2, C: 0.3269 # same value

我想保存B基于最大值的值,C即使0.3269这个值被重复多次。

期望的输出:

final_score = 2

标签: python

解决方案


如果我正确理解您的问题,请给出以下内容:

lst = [{'A': -11.88, 'B': 8, 'C': 0.0548},
    {'A': -10.79, 'B': 76, 'C': 0.0049},
    {'A': -6.167, 'B': 57, 'C': -0.0018},
    {'A': -2.569, 'B': 94, 'C': -0.0062},
    {'A': -1.667, 'B': 2, 'C': 0.3269},
    {'A': -1.356, 'B': 2, 'C': 0.3269}]

此代码适合您:

final_score = max(lst, key=lambda x:x['C'])['B']

如果您没有将字典值保存在列表中,但想在循环中找到最大值,只需执行以下操作:

final_score = None
max_clusters = float("-inf")
for i in foo_range: # your loop 
    # do something and retrieve 'score' and 'n_clusters' 
    if max_clusters < n_clusters:
        final_score = score
        max_clusters = n_clusters

print(final_score)

推荐阅读