一个简单的选择是首先确定最小值,然后选择映射到该最小值的所有键:
min_value = min(d.itervalues())min_keys = [k for k in d if d[k] == min_value]
对于Python 3,请使用
d.values()代替
d.itervalues()。
这需要两次通过字典,但是无论如何应该是最快的选择之一。
使用储层采样,您可以实施单次通过方法,以随机选择其中一项:
it = d.iteritems()min_key, min_value = next(it)num_mins = 1for k, v in it: if v < min_value: num_mins = 1 min_key, min_value = k, v elif v == min_value: num_mins += 1 if random.randrange(num_mins) == 0: min_key = k
写下这段代码后,我认为该选项具有相当的理论意义……:)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)