argmin для вложенного dict в python

1

У меня есть диктофон объекта. Каков наилучший способ найти ключи, связанные с минимальным значением объекта? Например:

myDict = {'a': {'n': 1, 'm' : 2, 'l' : 3}, 'b':{'m' = 2, 'l': 3, 'k':4}}
(firstKey, secondKey) = argmin(myDict)

Аргмин должен возвращать "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
    только первый.
Теги:

2 ответа

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
0

Это работает и оставляет большую часть работы для создания python:

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)

Это связано с этим ответом. Помощник возьмет кортеж ключа и dict, найдите ключ (mi) пройденного dict с минимальным значением и вернет его вместе со значением (v) и ключом первого уровня (key).

Ещё вопросы

Сообщество Overcoder
Наверх
Меню