它给了我这个错误:
Exception in thread Thread-163:
Traceback (most recent call last):
File "C:\Python26\lib\threading.py", line 532, in __bootstrap_inner
self.run()
File "C:\Python26\lib\threading.py", line 736, in run
self.function(*self.args, **self.kwargs)
File "C:\Users\Public\SoundLog\Code\Código Python\SoundLog\SoundLog.py", line 337, in getInfo
self.data1 = copy.deepcopy(Auxiliar.DataCollection.getInfo(1))
File "C:\Python26\lib\copy.py", line 162, in deepcopy
y = copier(x, memo)
File "C:\Python26\lib\copy.py", line 254, in _deepcopy_dict
for key, value in x.iteritems():
RuntimeError: dictionary changed size during iteration
Run Code Online (Sandbox Code Playgroud)
在执行我的python程序时.
我怎样才能避免这种情况发生?
提前致谢 ;)
我正在练习一个非常简单的python代码.我试图找到它的解决方案,但找不到它.
def del_contacts():
for name, number in d1.items():
if (del_name == name):
del d1.name and print ("Contact deleted!")
else:
print ("Contact does not exist")
z = input ("Do you wish to delete any of the number you added? ")
if z == 'yes':
del_name = input ("Type the name of the contact you wish to delete")
del_contacts()
else:
print ("ok")
Run Code Online (Sandbox Code Playgroud)
但是这给了我的错误in <module> del_contacts()
,接着用
in del_contacts for name, numbers in d1.items(): RuntimeError: dictionary changed size during iteration
一直面临着这样的问题.任何人都可以告诉我为什么会发生这种错误?任何修复,以后我应该做些什么来避免这样的错误?
我(尝试)globals()在我的程序中使用迭代所有全局变量.这就是我的方式:
for k, v in globals().iteritems():
function(k, v)
Run Code Online (Sandbox Code Playgroud)
当然,在这样做的过程中,我只创建了2个全局变量,k并且v.所以我得到了这个例外:
RuntimeError: dictionary changed size during iteration
Run Code Online (Sandbox Code Playgroud)
而且,以下是我解决问题的各种尝试失败:
# Attempt 1:
g = globals()
for k, v in globals().iteritems():
function(k, v)
# Attempt 2 (this one seems to work, but on closer inspection it duplicates
#the last item in the dictionary, because another reference is created to it):
k = v = None
for k, v in globals().iteritems():
function(k, v)
Run Code Online (Sandbox Code Playgroud)
我看过像这样的帖子处理同样的异常.这是不同的,因为无法为每个字典条目分配变量而不为其创建变量名称...这样做会引发错误.
我有一个复杂的dict数组,它有一些作为字符串“NULL”的值,我想删除,我的 dict 看起来像这样:
d = [{
"key1": "value1",
"key2": {
"key3": "value3",
"key4": "NULL",
"z": {
"z1": "NULL",
"z2": "zzz",
},
},
"key5": "NULL"
}, {
"KEY": "NULL",
"AAA": "BBB",
}]
Run Code Online (Sandbox Code Playgroud)
我想清除所有值为NULL 的键
像这样:
[{"key1": "value1", "key2": {"key3": "value3", "z": {"z2": "zzz"}}}, {"AAA": "BBB"}]
我使用的是 Python 3.9,因此可以使用 walrus 运算符。