You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何确保Python random.choice选取多个元素时不返回重复项

问题根源

连续三次独立调用random.choice()属于有放回抽样,每次选择不会排除之前已经选中的元素,因此会出现重复值。另外原始代码中的字典定义存在语法错误:Python字典的键和值之间需要用冒号:分隔,而非等号=。

正确实现方式

使用random模块内置的random.sample()方法即可,该方法会对序列做无放回随机抽样,直接返回指定数量的互不重复的元素,代码如下:

import random

# 修正语法错误后的字典
categories = {
    "fruits": ['banana', 'apple', 'strawberry', 'grape', 'watermelon', 'mango'],
    "countries": ['Canada', 'Brazil', 'Ghana', 'Cuba', 'Japan', 'Germany', 'France'],
    "colors": ['green', 'brown', 'pink', 'yellow', 'red', 'grey', 'blue']
}

category = random.choice(list(categories.keys()))
print(category)
# 无放回抽取3个不重复元素
words = random.sample(categories[category], k=3)
print(words)
注意事项
  • 使用random.sample(population, k=n)时,要求抽样数量n不能大于原序列population的总长度,否则会抛出ValueError。当前每个分类下的元素数量都大于3,不存在这个问题。
  • 如果需要先打乱列表再取前3个元素,也可以用random.shuffle()先打乱原列表的副本再切片,但random.sample()实现效率更高,是更优选择。

内容的提问来源于stack exchange,提问作者arisctin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 06:48:14