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

如何在dict推导式中使用同一随机生成值同时作为键和值?

解决字典推导式中键值对应随机数不一致的问题

你的问题核心是每次循环里调用了两次rng.choice,生成了完全独立的两组随机数组,导致字典的键和对应值使用的不是同一组数据,自然求和结果不匹配。

下面是两种可行的修正方案:

方案一:普通循环(直观易懂)

先在每次循环中生成一组随机数组,再同时用它来生成键和计算值:

import numpy as np

rng = np.random.default_rng()
sample_size = 3

def my_function(x: np.array) -> int:
    return sum(x)

dictionary = {}
for _ in range(sample_size):
    # 只生成一次随机数组并排序
    random_arr = sorted(rng.choice(1000, size=3, replace=False))
    # 复用同一个数组生成键和计算值
    dictionary[tuple(random_arr)] = my_function(random_arr)

方案二:生成器+字典推导式(保持简洁)

通过生成器表达式先预先生成所有需要的随机数组,再在字典推导式中复用每个数组:

import numpy as np

rng = np.random.default_rng()
sample_size = 3

def my_function(x: np.array) -> int:
    return sum(x)

# 生成器一次性产生所有随机数组
random_samples = (sorted(rng.choice(1000, size=3, replace=False)) for _ in range(sample_size))
# 推导字典时复用每个数组
dictionary = {tuple(arr): my_function(arr) for arr in random_samples}

两种方案都能保证键对应的数组和传入my_function的是同一组,因此键的求和结果和对应值完全匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 19:33:23