Python 在词典中查找多个最小值

Python 在词典中查找多个最小值,python,dictionary,min,Python,Dictionary,Min,我有一个python dict的dict,我想找到每个内部dict的所有最小值,对于外部dict中的每个键 为了给出一个简化的版本,假设我们有一个dict of 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'

我有一个python dict的dict,我想找到每个内部dict的所有最小值,对于外部dict中的每个键

为了给出一个简化的版本,假设我们有一个dict of 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}}
我想创建一个新的dict,其中对于每个内部dict,我找到该dict的最小值并获取相应的键值

因此,对于dict
{'b':10,'c':5,'d':6,'e':6,'f':6}
的键
a
,最小值是5,因此我会将
a
放在分配给空列表的新dict中,然后将
c
附加到列表中,因为它与值5相对应

上述列表的最终输出如下所示:

output{a: [c], b: [d, e, f], c: [a, b], d: [e, f], e: [d, f], f: [d, e ]}
我遇到的问题是,是否存在多个最小值。例如,
f
的内部dict有两个值为0的键(
d
e
),因此都应该返回

以下是我目前掌握的代码:

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']}
所以它返回了正确的最小值,只是不是所有的最小值


感谢您的时间。

您可以在
for
循环中进行一个小的修改,并在生成密钥列表之前从内部字典的值中获取最小值:

new_dict = {}
for k, v in my_dict.items():
    min_val = min(v.values())
    new_dict[k] = [sk for sk, sv in v.items() if sv == min_val]

print(new_dict)
# {'a': ['c'], 'c': ['a', 'b'], 'f': ['e', 'd'], 'e': ['f', 'd'], 'd': ['f', 'e'], 'b': ['e', 'd', 'f']}