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())])
我有以下代码:
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())])