我有一个 python 字典如下:
{'APPLE_PROVIDERS' : ["some", "provider","can","be", "null"],
....
}
我想要做的是从一个键的列表(这是一个值)中获取一个随机子列表。不只是一个元素,而是一个完全随机的子列表。这是我尝试过的:
a_list = a_dict.get('APPLE_PROVIDERS', "")
for item in a_list[randrange(0,len(a_list)) : randrange(0,len(a_list))]:
...do something..
这个东西有两个问题:
如果列表为空,或者字典查找失败,则程序失败,因为 randrange 将 (0,0) 作为参数,这会导致错误
很多时候,两次 randrange() 调用都会生成相同的数字,尤其是当列表很小的时候。这将返回一个空列表。例如a_list[5:5]
那么,在处理上述情况的情况下,获得随机子列表的最佳方法是什么?另外,我不关心顺序。什么都行。每次 for 循环开始时,我只想要一个完全随机的 0,1... 直到 len(a_list) 元素的子列表。
如果列表可以在其他可以包含类似元素的数据结构中更改,那对我也适用。
最佳答案
对其进行采样。
>>> random.sample(["some", "provider", "can", "be", "null"], 3)
['some', 'can', 'provider']
>>> random.sample(["some", "provider", "can", "be", "null"], 3)
['can', 'null', 'provider']
>>> random.sample(["some", "provider", "can", "be", "null"], 3)
['null', 'some', 'provider']
关于python - 从 Python 列表中提取随机子列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33909968/