预先感谢您的帮助。
我构建了以下代码(我尝试了以下代码,在字典中使用了字典)。
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
我的意思是键具有最大值。
有人知道我可以解决这个问题吗?
答案 0 :(得分:2)
具有内置功能的简单方式:
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
答案 1 :(得分:2)
使用以下代码获取结果:-
import numpy as np
key_list, value_list = [], []
character = {'eyes_color':{"blue":10,"brown":12},
'hair_color':{"black":15, "blonde":7},
'gender': {"male":16,"female":6}
}
for var in character.values():
for i in var :
key_list.append(i)
value_list.append(var[i])
max_index = np.argmax(value_list) #Getting index of maximum value
result = key_list[max_index] #Getting result with the help of index value.
print(result)
输出
male
答案 2 :(得分:2)
您也可以使用map
和functools.partial
进行此操作。
vmax = partial(max, key=itemgetter(1))
vmax(map(vmax, map(dict.items, character.values())))[0]
这使用partial通过自定义键来创建可重用的max函数,然后将dict.items
映射到每个子字典,并将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
答案 3 :(得分:1)
另一种方法-
使用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
:
from operator import itemgetter
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=itemgetter(1)) for chars in character.values()],key=itemgetter(1))[0]