前言
看起来这可能是几个stackoverflow问题的重复,但我的情况(可能)略有不同。
我的情况
我有一个字典。 键 是一个 字符串,值 是一个 整数。
我希望Python脚本可以随机选择 N 个 键。
值表示被选择的可能性大小。 键的值越高,被随机选择的概率就越高。
我的解决方案
因此,使用其他StackOverflow帖子和互联网的力量,我成功地使用了加权随机来解决它。
DICT_VAR= {'best':308281009, 'good':7066325, 'meh':26884, 'bad':71, 'terrible':16, 'never':0}
list_var = []
for i in DICT_VAR.keys():
list_var.extend([i]*DICT_VAR[i])
print random.sample(list_var, 2) # get 2 random choice I suppose
问题(陷阱)
正如您所注意到的,字典中的值可能非常大(可以无限大),也可能小至0(零是最小值,没有负数)。
运行这段代码(使用稍大的数字)导致我的计算机冻结并无响应,直到我强制重启。
我的问题
我该如何处理这种情况?是否有其他适合我情况的随机选择方法,因为加权随机是当前情况下最糟糕的解决方案。