从嵌套字典中获取具有最大值的键

2024-06-26 01:36:23 发布

您现在位置:Python中文网/ 问答频道 /正文

提前谢谢你的帮助。在

我构建了以下代码(我尝试了下面的代码,我在字典中使用了一个字典)。在

import operator
character = {'eyes_color':{"blue":10,"brown":12},
         'hair_color':{"black":15, "blonde":7},
         'gender': {"male":16,"female":6}
         }
maximun_key=max(character.items(), key=operator.itemgetter(1))[0]

如您所见,我在代码中使用了:

^{pr2}$

作为输出获取:

brown

male

black

即最大值,但对于每个字典。在

我期望在这种情况下,输出如下:

male

我的意思是具有最大值的。在

有人知道我怎么解决这个问题吗?在


Tags: key代码import字典bluegenderoperatormale
3条回答

使用内置功能的简单方式:

d = {'eyes_color': {"blue": 10, "brown": 12},
     'hair_color': {"black": 15, "blonde": 7},
     'gender': {"male": 16, "female": 6}
     }

max_value, max_key = max(((v,k) for inner_d in d.values() for k,v in inner_d.items()))
print(max_key)   # male
print(max_value) # 16

您也可以使用mapfunctools.partial来完成此操作。在

vmax = partial(max, key=itemgetter(1))
vmax(map(vmax, map(dict.items, character.values())))[0]

它使用partial创建一个带有自定义键的可重用max函数,然后将dict.items映射到每个子dict,然后将max映射到该子dict,然后得到这些结果的max。在

^{pr2}$

另一种方法-

使用lambda

character = {'eyes_color':{"blue":10,"brown":12},
         'hair_color':{"black":15, "blonde":7},
         'gender': {"male":16,"female":6}
         }

maximun_key= max([max(chars.items(),key = lambda x: x[1]) for chars in character.values()],key = lambda x: x[1])[0]

使用operator.itemgetter

^{pr2}$

相关问题 更多 >