gpt4 book ai didi

python - 将随机值设置为字典的一半并复制其余部分

转载 作者:行者123 更新时间:2023-12-04 02:25:21 26 4
gpt4 key购买 nike

我有一个由其他列表创建的 python 字典:

a = dict.fromkeys(some_list)
因为我通过上面的命令创建了这个字典,我在字典中的所有值都是 None 预期的。它看起来像这样:
a = {('A', 'B'): None,
('A', 'C'): None,
('B', 'A'): None,
('C', 'A'): None}
我想要的是:能够通过 Nonerandom.uniform(0,1) 值更改为随机数。
但是,我不想对整个字典执行此操作,而只是前 2 个键( ('A', 'B')('A', 'C') ),其余的( ('B', 'A')('C', 'A') )应该从前 2 个键中复制。
以下将所有值设置为随机数。但是,我找不到一种方法将前两个设置为随机,其余的在没有对 key 进行硬编码的情况下进行复制。
for key in a:
a[key] = random.uniform(0, 1)
有什么建议么?

最佳答案

visited = set()

for key in a:

if key in visited:
continue

# mark key as visited
visited.add(key)
visited.add(key[::-1])

value = np.random.uniform(0, 1)

a[key] = value
a[key[::-1]] = value

更动态和有效的解决方案是 散列 给定的键,以便忽略元组顺序
def hash_tuple(t):

hash_value = 0

for elem in t:

if isinstance(elem, int):

hash_value += elem

elif isinstance(elem, str):

hash_value += ord(elem)

else:

raise ValueError(f'Invalid Type {type(elem)}')

return hash_value
global_seed = np.random.randint(0, 100)

for key in a:

seed = hash_tuple(key) + global_seed
random = np.random.RandomState(seed)

value = random.uniform(0, 1)

a[key] = value

关于python - 将随机值设置为字典的一半并复制其余部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68117392/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com