相关疑难解决方法(0)

如何解决这个python错误?RuntimeError:字典在迭代期间改变了大小

它给了我这个错误:

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

3
推荐指数
1
解决办法
1万
查看次数

Python RuntimeError:字典在迭代期间改变了大小

我正在练习一个非常简单的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

一直面临着这样的问题.任何人都可以告诉我为什么会发生这种错误?任何修复,以后我应该做些什么来避免这样的错误?

python dictionary

2
推荐指数
1
解决办法
7286
查看次数

通过globals()字典迭代

我(尝试)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)

我看过像这样的帖子处理同样的异常.这是不同的,因为无法为每个字典条目分配变量而不为其创建变量名称...这样做会引发错误.

python iteration

2
推荐指数
1
解决办法
917
查看次数

递归删除所有值为 NULL 的键

我有一个复杂的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 运算符。

python recursion null dictionary

1
推荐指数
1
解决办法
151
查看次数

标签 统计

python ×4

dictionary ×2

iteration ×1

null ×1

recursion ×1