主要我有这本字典rhs
'obj' was not declared in this scope
我试图仅对rhs中的值进行规范化,然后将它们再次存储在另一个字典switch
中,所以每个键的值总和必须等于1,但我不能!我需要以这种方式存储它们,以便以后能够调用每个值数组都属于某个键,例如:
rhs
{{('1', '3'): [0.06081006262521797, 0.4965853037914095], ('1', '4'): [0.0018363047770289071], ('3', '2'): [0.4965853037914095]}
type(rhs1)
<class 'dict'>
所以我写了
rhs_normalized
我收到此错误
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
导致的错误,因为据我了解,我试图将列表用作字典的键,并且该键不可散列!
对于初学者来说,这似乎是一个常见错误,因此我尝试了许多Internet上可用的解决方案,但均未成功。预先感谢您的帮助。
答案 0 :(得分:1)
您正在将列表用作dict键(不可散列并且不能用作键)。根据您的示例输出,我想您的意思是使用现有的dict键并转换列表值。
例如(简化了构建第二个字典的过程):
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]}