Я пытаюсь скопировать словарь (из другого класса / файла) в переменную, используя copy.deepcopy
, чтобы исходное содержимое словаря не было затронуто.
Изначально я использовал .copy()
, которыйработает в моем случае, но оказывается, что это действительно повлияло на содержимое словаря, из которого я скопировал .. Обнаружил, что вместо этого следует использовать copy.deepcopy
, но на этот раз я получаю еще одну ошибку - # RuntimeError: '__init__' method of object's base class (QMenu) not called.
Здесь я пытаюсь добиться того, чтобы преобразовать именование объектов QMenu (например, объект QtGui.QMenu в 0x7f142bd582d8) в удобочитаемую форму.
Это мой код:
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']}})
Большое спасибо заранее за любые ответы!