英文:
updating default dictionary with new key and value
问题
以下是您要翻译的内容:
我需要在使用它在不同脚本中显示在GUI中之前,将一些键和值添加到默认字典中。
class MyClass:
def __init__(self):
self.my_dict = {
'dict1' : {
'col1' : value1,
'col2' : value2,
...
},
'dict2' : {
'col1' : value1,
'col2' : value2,
}
...
def set_attribute(self, dict, col, val)
self.my_dict[dict][col] = val
def set_attributes(self, dict, **kwargs):
for col, val in kwargs.items():
self.set_attribute(dict, col, val)
def get_attribute(self, dict, col):
if dict in self.my_dict:
return self.my_dict[dict].get(col)
return None
if __name__ == '__main__':
my_obj = MyClass()
value = my_obj.my_dict.get_attribute('dict', 'col1') * .011
my_obj.my_dict.set_attribute('dict1', 'col3', value)
这段代码用于更新字典以包含新的列名和值,但当我从另一个脚本运行它时,我只获得默认字典而不是更新后的字典。
main.py
from PyQt5 import QtWidgets
from dictclass import MyClass
class MainWindow(QtWidgets.QMainWindow):
def __init__(self, parent=None):
super(MainWindow, self).__init__(parent)
print(myclass_obj.my_dict)
if __name__ == '__main__':
import sys
myclass_obj = MyClass()
app = QtWidgets.QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec_())
请注意,我已经将代码中的HTML实体(例如'
)替换为普通的单引号(')以进行更清晰的翻译。
英文:
I need to add to a default dictionary some keys and values before using it in a different script to display it in a GUI.
class MyClass:
def __init__(self):
self.my_dict = {
'dict1' : {
'col1' : value1,
'col2' : value2,
...
},
'dict2' : {
'col1' : value1,
'col2' : value2,
}
...
def set_attribute(self, dict, col, val)
self.my_dict[dict][col] = val
def set_attributes(self, dict, **kwargs):
for col, val in kwargs.items():
self.set_attribute(dict, col, val)
def get_attribute(self, dict, col):
if dict in self.my_dict:
return self.my_dict[dict].get(col)
return None
if __name__ == '__main__':
my_obj = MyClass()
value = my_obj.my_dict.get_attribute('dict', 'col1') * .011
my_obj.my_dict.set_attribute('dict1', 'col3', value)
This works for updating the dictionary to contain the new col name and value but when I run it from my other script I only get the default dictionary and not the updated one.
main.py
from PyQt5 import QtWidgets
from dictclass import MyClass
class MainWindow(QtWidgets.QMainWindow):
def __init__(self, parent=None):
super(MainWindow, self).__init__(parent)
print(myclass_obj.my_dict)
if __name__ == '__main__':
import sys
myclass_obj = MyClass()
app = QtWidgets.QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec_())
答案1
得分: 0
我能根据Tim Roberts的评论解决了这个问题。
我在myclass.py中添加了这个方法:
def update_dictionary(self):
value = self.get_attribute('dict', 'col1') * 0.011
self.set_attribute('dict1', 'col3', value)
在main.py中我调用了它:
class MainWindow():
...
self.myclass_obj = myclass_obj
self.myclass_obj.update_dictionary()
self.myclass_obj.my_dict
英文:
I was able to solve this based on Tim Roberts comment
I added to myclass.py this method
def update_dictionary(self):
value = self.get_attribute('dict', 'col1') * .011
self.set_attribute('dict1', 'col3', value)
within main.py I called it.
class MainWindow():
...
self.myclass_obj = myclass_obj
self.myclass_obj.update_dictionary()
self.myclass_obj.my_dict
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论