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

如何从字典中随机提取具有指定值的键?

解决方法:按指定分值随机获取单词

你的需求很清晰,咱们可以通过先分组再随机选择的方式来实现,步骤简单又高效:

第一步:重构字典(按分值分组)

首先把原有的wordList转换成「分值对应单词列表」的结构,这样后续查找指定分值的单词时不用每次都遍历整个字典,效率更高。

方法一:用collections.defaultdict(推荐)

这个方法更简洁,不用手动处理键不存在的情况:

import random
from collections import defaultdict

# 你的原始单词字典
wordList = {"to":1,"as":1,"be":1,"see":2,"bed":2,"owl":2,"era":2,"alive":3,"debt":3,"price":4,"stain":4}

# 重构为「分值: 单词列表」的映射
score_grouped_words = defaultdict(list)
for word, score in wordList.items():
    score_grouped_words[score].append(word)

方法二:用普通字典(无需额外导入)

如果不想用collections模块,用普通字典也能实现:

import random

wordList = {"to":1,"as":1,"be":1,"see":2,"bed":2,"owl":2,"era":2,"alive":3,"debt":3,"price":4,"stain":4}

score_grouped_words = {}
for word, score in wordList.items():
    # 如果当前分值不在字典里,先初始化一个空列表
    if score not in score_grouped_words:
        score_grouped_words[score] = []
    score_grouped_words[score].append(word)

第二步:写函数获取随机单词

接下来封装一个函数,传入目标分值,就能返回该分值下的随机单词,同时处理分值不存在的情况:

def get_random_word(score):
    # 获取对应分值的单词列表
    words = score_grouped_words.get(score)
    # 如果没有找到对应分值的单词,返回提示字符串(也可以返回None)
    if not words:
        return "No words found with this score."
    # 从列表里随机选一个单词
    return random.choice(words)

测试用法

比如你要找分值为3的随机单词,直接调用函数即可:

# 示例调用
random_word = get_random_word(3)
print(random_word)  # 会随机输出 "alive" 或 "debt"

如果你调用不存在的分值(比如5),函数会返回我们设置的提示:

print(get_random_word(5))  # 输出 "No words found with this score."

这样整个流程就搞定啦,逻辑清晰而且复用性很强~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 17:40:18