Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 在python3中为变量赋值,只有最后一组被赋值给所有变量_Python 3.x_Artificial Intelligence_Cs50 - Fatal编程技术网

Python 3.x 在python3中为变量赋值,只有最后一组被赋值给所有变量

Python 3.x 在python3中为变量赋值,只有最后一组被赋值给所有变量,python-3.x,artificial-intelligence,cs50,Python 3.x,Artificial Intelligence,Cs50,我试着给每个变量分配一组具有适当长度的单词的值。如果我把它打印出来,单个步骤看起来很好,但是当我试着看里面是什么时,我得到了最后一套 to_add = set() for x in self.domains: to_add.clear() # clear set for next search for word in self.domains[x]: if len(word) == (x.length): to_add.

我试着给每个变量分配一组具有适当长度的单词的值。如果我把它打印出来,单个步骤看起来很好,但是当我试着看里面是什么时,我得到了最后一套

to_add = set()

 for x in self.domains:

     to_add.clear() # clear set for next search

     for word in self.domains[x]:

         if len(word) == (x.length):

             to_add.add(word)

     self.domains[x] = to_add

     for variable in self.crossword.variables:

         if variable == x:

             self.crossword.values = self.domains[x]

             variable = to_add

             print ("")

             print ("***************")

             print (x)

             print (self.crossword.values)

             print (variable)

             print ("***************")

 print("-----------------")

 print (self.domains)

 print("-----------------")
作为我得到的错误示例(我得到六个变量中的每一个都有相同的值,即使它们不相同):

有人能告诉我如何解决这个问题吗


感谢您重复添加和清除同一组

self.domains[x]=to_add
不会将副本添加到
domains
,因此每次修改
to_add
,您也会修改已添加到
域的内容,因为它们都是相同的集合

最简单的解决方案是创建一个新的
来添加
集,每次迭代一次:

for x in self.domains:

    # Create a new set each time instead of clearing the old one
    to_add = set()  

    for word in self.domains[x]:
        . . .
for x in self.domains:

    # Create a new set each time instead of clearing the old one
    to_add = set()  

    for word in self.domains[x]:
        . . .