我在反复检查和修改字典时遇到了问题。。。在
假设我有一本字典:
dict1 = {'A' : 'first', 'B' : 'second', 'C' : 'third', 'D' : 'fourth'}
我想遍历dict1,使用其中的数据构建第二个字典。完成dict1
中的每个条目后,我将其删除。在
在伪代码中:
^{pr2}$我知道改变一个循环中iterable的长度会导致问题,而以上这些可能并不容易实现。在
对this question这个问题的回答似乎表明我可以使用keys()
函数,因为它返回一个动态对象。我试过:
for k in dict1.keys():
if k == A or k == B:
dict2[k] = dict1[k]
elif k == C:
dothis()
else:
dosomethingelse()
del dict1[k]
但是,这只是给出:
'RuntimeError: dictionary changed size during iteration'
第一次删除后。我也尝试过使用iter(dict1.keys())
,但是得到了相同的错误。在
因此,我有点困惑,需要一些建议。谢谢
为什么不简单地dict1.clear()? 请注意,在循环中,每次迭代都会删除每个元素?在
我能想到的一个简单(天真)的解决方案是
只需使用
.keys()
方法创建一个独立的键列表。在下面是Python 2.7代码的工作版本:
对于Python3,在
^{pr2}$.keys()
周围添加list(),并使用print函数:相关问题 更多 >
编程相关推荐