我正在尝试使用一条语句在字典中创建字典。如果 key 不存在,则应创建它。
我现在拥有的代码片段:
self.data[self.stringvar1.get()] = { date : (int(self.total.get()), int(self.resources.get())) }
这不会创建新 key ,而是覆盖 self.data,即使 stringvar1 不同。我尝试了几个选项,但找不到我想要的。我是否必须手动检查 key 是否存在,或者是否有一个简单的习惯用法?
最佳答案
一种选择是使 self.data
成为 collections.defaultdict(dict)
。访问此 defaultdict
上不存在的键会自动为此键创建一个新字典,您只需使用
self.data[self.stringvar1.get()][date] = (
int(self.total.get()), int(self.resources.get()))
请注意,defaultdict
存在隐藏错误的风险,因为您永远不会遇到 KeyError
。另一种方法是使用普通的 dict
和 setdefault()
方法:
self.data.setdefault(self.stringvar1.get(), {})[date] = (
int(self.total.get()), int(self.resources.get()))
关于python - 在Python 3.2中向字典中添加字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11538830/