我有一个dict对象的字典。查找与对象的最小值相关联的键的最佳方法是什么? 例如:
myDict = {'a': {'n': 1, 'm' : 2, 'l' : 3}, 'b':{'m' = 2, 'l': 3, 'k':4}}
(firstKey, secondKey) = argmin(myDict)
argmin应该返回'a'和'n' 我现在正在做的是:
minValue = 10
firstKey, secondKey = None, None
for k1 in myDict.keys():
for k2 in myDict[k1].keys():
if myDict[k1][k2] < minValue:
minValue = myDict[k1][k2]
firstKey, secondKey = k1, k2
答案 0 :(得分:0)
这有效,并将大部分工作留给python build ins:
def helper(k_d):
key, d = k_d
mi = min(d, key=d.get)
v = d[mi]
return ((key, mi), v)
d = {'a': {'n': 1, 'm': 2, 'l': 3}, 'b': {'m': 2, 'l': 3, 'k': 4}}
min_dict = dict(map(helper, d.items()))
result = min(min_dict, key=min_dict.get)
这是基于answer构建的。 Helper将使用键和dict的元组,找到传递的dict的键(mi
)的最小值,然后将其与值(v
)和第一级键({ {1}}。
答案 1 :(得分:0)
这将同时适用于keys
my_dict = {'a': {'n': 1, 'm' : 2, 'l' : 3}, 'b':{'m': 2, 'l': 3, 'k':4}}
smallest = {i: min(my_dict[i].values()) for i in my_dict}
for k, v in my_dict.items():
print(k, *[i for i in v if v[i] == smallest[k]])
# a n
# b m