У меня есть python dict dicts, и я хотел бы найти все минимальные значения для каждого внутреннего dict, для каждого ключа во внешнем dict. Я поясню ниже на примере.
Чтобы дать упрощенную версию, скажем, у нас есть этот словарь диктов:
my_dict = {'a': {'b': 10, 'c': 5, 'd': 6, 'e': 6, 'f': 6}, 'b': {'a': 10, 'c': 5, 'd': 4, 'e': 4, 'f': 4}, 'c': {'a': 5, 'b': 5, 'd': 7, 'e': 7, 'f': 7}, 'd': {'a': 6, 'b': 4, 'c': 7, 'e': 0, 'f': 0},'e': {'a': 6, 'b': 4, 'c': 7, 'd' : 0, 'f': 0}, 'f': {'a': 6, 'b': 4, 'c': 7, 'd': 0, 'e': 0}}
Я хочу создать новый словарь, где для каждого внутреннего словаря я нахожу минимальное значение этого словаря и получаю соответствующее значение ключа.
Таким образом, для ключа a
с словарем {'b': 10, 'c': 5, 'd': 6, 'e': 6, 'f': 6}
минимальное значение равно 5, поэтому я бы поместил a
в новый словарь, назначенный пустому списку, а затем добавил бы c
в список, поскольку он соответствует значению 5.
Окончательный вывод для приведенного выше списка будет выглядеть так:
output{a: [c], b: [d, e, f], c: [a, b], d: [e, f], e: [d, f], f: [d, e ]}
Часть, с которой у меня возникают проблемы, заключается в том, что присутствует несколько минимальных значений. Например, внутренний словарь для f
имеет два ключа (d
и e
, которые имеют значение 0, поэтому должны быть возвращены оба.
Вот код, который у меня есть до сих пор:
new_dict = {}
for k, v in my_dict.items():
new_dict[k] = [min(v, key=v.get)]
print((new_dict))
Что дает мне:
{'a': ['c'], 'b': ['d'], 'c': ['a'], 'd': ['e'], 'e': ['d'], 'f': ['d']}
Таким образом, он возвращает правильный минимум, а не ВСЕ минимумы.
Спасибо за ваше время.