我需要提取字典中具有最高值的所有键。以下是字典的示例:
a = {0: {0: 13, 1: 2, 2: 5, 3: 9}, 1: {0: 2, 1: 5, 2: 1, 3: 12}, 2: {0: 1.6, 1: 4, 2: 2, 3: 11}}
最高值为 12(因为 a[0][0]=13 具有相同的键,请参见下文),因此我需要一个导致该值的键元组。在此示例中:
find_highest_value(a) = (1, 3)
我知道如何在非嵌套环境中找到具有最大值的键:
max(c, key=lambda x: c[x])
此外,我可以使用固定值访问第二个字典:
max(c, key=lambda x: c[x][0])
返回 1(因为 a[1][0] 最高)。下面的代码不起作用,此时我放弃了,因为我没有进一步的想法。
max(c, key=lambda (x,y): c[x][y])
附加问题:如何忽略两个键相等的值? IE。忽略 b == c 的所有值 a[b][c]。
编辑:
对评论中问题的回复:
- 我需要完整字典中一个最高值的键。
- 它总是像示例一样嵌套。一本字典的字典,后者始终包含键值对。将其视为图中的邻接矩阵。
最佳答案
max([(x,y,a[x][y]) for x in a for y in a[x] if x != y], key=lambda x: x[2])
给出输出
(1, 3, 12)
并且会根据需要忽略重复项
关于python - 提取嵌套字典中具有最高值的键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32783151/