说我同意:
import collections, random
d = collections.defaultdict(list)
d['foo'].append('bar')
然后我选择一个随机元素:
random.choice(d)
现在让我们打印
d
:defaultdict(list, {0: [], 'foo': ['bar']})
为什么
random.choice
要添加0
作为key? 最佳答案
在内部,这就是 random.choice
所做的:
def choice(self, seq):
"""Choose a random element from a non-empty sequence."""
return seq[int(self.random() * len(seq))]
与您的情况一样,长度为 1,乘法后将产生
[0.0, 1.0)
范围内的数字,并且在对它应用 int()
后,您将得到 0。请注意,
defaultdict
将向在其上访问的 dict 添加任何键:>>> d = collections.defaultdict(list)
>>> d['i dont exist']
[]
>>> d
defaultdict(<type 'list'>, {'i dont exist': []})
因此,您的 dict 以
0
结束。关于python - 从非空 defaultdict 中选择一个随机元素,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38868130/