python - 提取嵌套字典中具有最高值的键

标签 python dictionary max

我需要提取字典中具有最高值的所有键。以下是字典的示例:

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/

相关文章:

mysql - 从表中的最大 ID 中选择最小日期

python - 将标签与json格式的句子进行匹配

python - matplotlib 中绘图点的标签

Java-当值存储在字符串列表中时,如何使用 Map 查找匹配的键

mysql - SQL 分组依据和最大值

MYSQL - 选择每个玩家每天的最高分数

python - Pandas : time mask between 'on' /'off'

python - PyYAML 使用键的前导问号转储字典并在下一行打印值

java - 当出现null时如何用Stream过滤Map?

使用 Groovy 按降序对 Map 值进行排序