gpt4 book ai didi

python - 将 for 循环的数组结果存储在字典中

转载 作者:行者123 更新时间:2023-12-01 08:13:16 27 4
gpt4 key购买 nike

主要是我有这本字典 rhs

rhs
{{('1', '3'): [0.06081006262521797, 0.4965853037914095], ('1', '4'): [0.0018363047770289071], ('3', '2'): [0.4965853037914095]}
type(rhs1)
<class 'dict'>

我尝试仅标准化 rhs 中的值,并将它们再次存储在另一个字典 rhs_normalized 中,因此每个键的值之和必须等于 1,但我不能!我需要以这种方式存储它们,以便稍后能够调用属于某个键的每个值数组,例如:

 rhs_normalized
{('1', '3'): [0.10909682119561295, 0.8909031788043871], ('1', '4'): [1.0], ('3', '2'): [1.0]}

所以我写了

rhs
{{('1', '3'): [0.06081006262521797, 0.4965853037914095], ('1', '4'): [0.0018363047770289071], ('3', '2'): [0.4965853037914095]}
type(rhs1)
<class 'dict'>

rhs_normalized = {}
for each_array in list(rhs1.values()):
each_array_of_values_equal = []
for i in each_array :
each_array_of_values_equal.append(i/sum(each_array))
rhs_normalized[each_array] = each_array_of_values_equal

我收到这个错误

... 
Traceback (most recent call last):
File "<stdin>", line 5, in <module>
TypeError: unhashable type: 'list'

我认为错误是由于 rhs_normalized[each_array] 造成的,因为据我了解,我尝试使用列表作为字典的键,而该键不可散列!

这对于初学者来说似乎是一个常见错误,因此我尝试了互联网上的许多解决方案,但没有成功。预先感谢您的帮助。

最佳答案

您正在使用列表作为字典键(不可散列且不能用作键)。根据您的示例输出,我认为您的意思是使用现有的字典键并转换列表值。

例如(稍微简化了构建第二个字典的过程):

data = {('1', '3'): [0.06081006262521797, 0.4965853037914095], ('1', '4'): [0.0018363047770289071], ('3', '2'): [0.4965853037914095]}

result = {k: [v / sum(vals) for v in vals] for k, vals in data.items()}
print(result)
# {('1', '3'): [0.10909682119561295, 0.8909031788043871], ('1', '4'): [1.0], ('3', '2'): [1.0]}

关于python - 将 for 循环的数组结果存储在字典中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55107326/

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