我正在尝试使用copy.deepcopy
将字典(从另一个类/文件)复制到变量中,以使原始字典内容不会受到影响。
最初,我使用.copy()
可以实现我的目的,但实际上它实际上影响了我从其复制的字典中的内容。发现copy.deepcopy
可以代替但这次,我遇到另一个错误-# RuntimeError: '__init__' method of object's base class (QMenu) not called.
我要在这里实现的目的是使QMenu对象命名(例如,位于0x7f142bd582d8的QtGui.QMenu对象)符合人类可读的形式。
这是我的代码:
names_copy = copy.deepcopy(self.database.menus)
# This will affects content in self.database.menus
# names_copy = self.database.menus.copy()
# self.database.menus is of the following:
# defaultdict(<type 'dict'>, {0: {<QtGui.QMenu object at 0x7f142bd582d8>: ['Jack', 'Peter']}})
new_names_copy = {}
for k1, v1 in self.names_copy:
for k2, v2 in v1.items():
# Errors at the following line:
# RuntimeError: '__init__' method of object's base class (QMenu) not called.
names_copy[k1][k2] = names_copy[k1][k2]
# Remove the dict of the QMenu object naming
names_copy[k1].pop(k2)
print names_copy
# Expected Output: {0: {'Names': ['Jack', 'Peter']}})
在此先感谢您的答复!