Python 当有多个匹配项时使用 min() 获取随机值

Python get random value when using min() when there is more than one match

我有以下代码:

dict = {'a': 1, 'b': 2, 'c': 5, 'd':1, 'e': 5, 'f': 1}
get_min = min(dict, key=dict.get)

正如您在这里看到的,实际上有三个 min() 匹配“a”、“d”和“f”,其值为 1

这将 return 100% 的时间是“a”,因为这是 min() 根据我正在阅读的内容设计的目的。但是,我需要随机取回“a”、“d”或“f”,而不仅仅是“a”。

有没有什么方法可以使用 min() 或其他方式(也许是 lambda,我不太擅长)?我认为这会很简单,但事实证明它不是 :P。我可以通过一些 for 循环和创建列表来实现这一点,但我一直在寻找可能的最短路径。

我们将不胜感激!

谢谢,

jAC

np.random.choice([k for k in dict.keys() if dict[key]==min(dict.values())])

这是一种解决方案:

import random
dic = {'a': 1, 'b': 2, 'c': 5, 'd':1, 'e': 5, 'f': 1}

a = random.choice([k for k,v in dic.items() if v == min(dic.values())])