How to find the key corresponding to the maximum value in a dictionary of dictionary using max() function?
我知道如何在字典中找到与最大值相对应的键,这要归功于StackOverflow上的以下队列的答案。-
用Python的方式在字典中打印最大值的键,
python字典中对应最大值的键,
获取字典中最大值的键?等。
但我无法理解这对于一本字典来说是怎样的。
示例-我有一本字典d[x][l]。假设,我需要找到以下内容-对于一个特定的l='green',我需要找到x的对应值,其中d[x]['green']是最大的。
在这种情况下,如何使用max()函数?我想避免循环。我希望能找到一种类似于Matlab的矩阵方法——max(d(:,l))。
d[x][l]取整数值,x取整数值。
使用lambda:
1
| max(d, key=lambda x: d[x]['green']) |
调用key函数时,每个键都位于d中;如果要查找d[key]['green']最高的键,则返回该键。
演示:
1 2 3
| >>> d = {10: {'green': 42}, 81: {'green': 5, 'blue': 100}}
>>> max(d, key=lambda x: d[x]['green'])
10 |
号
d[10]['green']为最高值,返回10。
- 谢谢你的回答。我还在学习lambda运算符的工作原理!
- 如果x接受列表中的值,而不是字典中的所有键,那么答案是什么?
- @satarupaguha:lambda只创建一个函数,其中一个表达式的结果被返回。lambda x: d[x]['green']与def somefunction(x): return d[x]['green']相同,只是你不必给它起名字。
- @satarupaguha:d是一个字典,循环访问字典(就像max()将要做的那样)生成键,因此x是d中每个调用的一个键。d[x]是d中的一个值,根据您的问题,这些值都是至少有一个键'green'的字典。
- 我想循环遍历选定的键列表,而不是所有键。例如-maxlneighbor=0表示g.neighbor中的项(u):if degree[item][l]>maxlneighbor:maxlneighbor=degree[item][l]v=item
- @satarupaguha:然后将该列表传递给max();如果该列表是d中所有键的子集,则该键仍然相同。
- 哦。正确的。谢谢你的建议。
- @Satarupaguha:所以,maxlNeighbor = max(g.neighbors(u), lambda x: d[x][l]),使用同一个g、u和l作为您评论中的代码。
- @MartijnPieers如果我想找到诸如:d['green'][key]的最大值,我该如何更改找到最大值的语句?
- @ifreak:只需记住,对iterable中的每个值调用key函数。只要这个函数返回一个值,在这个值上计算出它的最大值。
- @马提尼派假定以下的格言:d = {'A':{'B':20,'C':50},'AA':{'B':10,'C':70}}使用:max(d, key=lambda x: d['A'][x])不起作用,为什么?
- @我认为我应该做的是:以东十一〔二十〕对吗?
- @伊弗莱克:没错,因为这样你就可以循环使用d['A']的键了。