-2

我试图用这个集合理解来改变我的原始代码

next_states = {next_states | self.transition_function[(state, 
    input_value)] for state in e_closure_states}

但是这段代码抛出

TypeError:不可散列的类型:'set'

原始代码(按预期工作)。另外,应该提到的是self.transition_function[(state, input_value)]已设置,这就是我使用联合的原因。提前致谢

for state in e_closure_states:
    next_states = next_states | self.transition_function[(state, input_value)]
4

1 回答 1

-2

发生错误TypeError: unhashable type: 'set'是因为您试图将一个集合添加为另一个集合的元素。正如错误消息所暗示的,集合只能包含可散列的元素,而集合本身是不可散列的。

我不完全确定我是否理解您要执行的操作,但请告诉我此代码是否产生与for您知道正确的循环相同的内容:

next_states = set.union(next_states, *(self.transition_function[(state, input_value)] for state in e_closure_states))

self.transition_function[(state, input_value)]是从您的代码中复制的。generator如括号所示,这是在 a 的内部。星号 ( *) 将生成器解包到set.union()调用中。您可以在此处阅读更多相关信息。

于 2019-11-06T04:41:53.757 回答