python-3.x 将字典与字典列表进行比较,并从列表中返回值高于单独字典的索引

u7up0aaq  于 2022-12-01  发布在  Python
关注(0)|答案(2)|浏览(142)

我有一个字典列表和一个单独的字典,它们有相同的键,只是值不同。例如,字典列表看起来像这样:

[{'A': 0.102, 'B': 0.568, 'C': 0.33}, {'A': 0.026, 'B': 0.590, 'C': 0.382}, {'A': 0.005, 'B': 0.857, 'C': 0.137}, {'A': 0.0, 'B': 0.962, 'C': 0.036}, {'A': 0.0, 'B': 0.991, 'C': 0.008}]

单独的字典如下所示:

{'A': 0.005, 'B': 0.956, 'C': 0.038}

我想把字典列表和独立字典进行比较,并从列表中返回比独立字典值高的索引。在这个例子中,索引为3,4,因为索引3和4中的字典对于关键字'B'具有更高的值,因为'B'在独立字典中具有最高的值。
我该如何处理这个问题呢?

js4nwp54

js4nwp541#

可以使用enumerate来查找最大值的索引:

org = [
    {'A': 0.102, 'B': 0.568, 'C': 0.33}, 
    {'A': 0.026, 'B': 0.590, 'C': 0.382}, 
    {'A': 0.005, 'B': 0.857, 'C': 0.137}, 
    {'A': 0.0, 'B': 0.962, 'C': 0.036}, 
    {'A': 0.0, 'B': 0.991, 'C': 0.008}
] 

com = {'A': 0.005, 'B': 0.956, 'C': 0.038}

def fnd_index(org, com):
    key_max, val_max = max(com.items(), key=lambda x: x[1])
    print('key_max:', key_max)
    print('val_max:', val_max)
    res = []
    for idx, dct in enumerate(org):
        if dct[key_max] > val_max:
            res.append(idx)
    return res

res = fnd_index(org, com)
print('result:', res)

输出量:

key_max: B
val_max: 0.956
result: [3, 4]
kkih6yb8

kkih6yb82#

您确定它应该只有索引4吗?

dict_list = [{'A': 0.102, 'B': 0.568, 'C': 0.33}, 
             {'A': 0.026, 'B': 0.590, 'C': 0.382}, 
             {'A': 0.005, 'B': 0.857, 'C': 0.137}, 
             {'A': 0.0, 'B': 0.962, 'C': 0.036}, 
             {'A': 0.0, 'B': 0.991, 'C': 0.008}] 

d = {'A': 0.005, 'B': 0.956, 'C': 0.038}

max_val = max(d.values())
idxmax = [i for i,j in enumerate(dict_list) if max(j.values()) > max_val]

print(idxmax)  # [3, 4]

相关问题