将字典与字典列表进行比较,并返回列表中值高于单独字典的索引



我有一个字典列表和一个单独的字典,它们具有相同的键,只有值不同。例如,字典列表如下所示:

[{'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'在单独的字典中具有最高的值。

我该如何处理这个问题,你有什么主意吗?

您可以使用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]

你确定它应该只有索引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]

相关内容

  • 没有找到相关文章

最新更新