首页 > 解决方案 > 从嵌套字典中获取具有最大值的键

问题描述

在此先感谢您的帮助。

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

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]

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

maximun_key=max(character.items(), key=operator.itemgetter(1))[0]

获取输出:

brown

male

black

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

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

male

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

有谁知道我该如何解决这个问题?

标签: pythondictionarymax

解决方案


您也可以使用mapand来执行此操作functools.partial

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

这使用 partial 使用自定义键创建可重用的 max 函数,然后只映射dict.items到每个 sub dict,然后将 max 映射到这些结果的最大值。

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

推荐阅读