python - 在Python 3.2中向字典中添加字典

标签 python python-3.x

我正在尝试使用一条语句在字典中创建字典。如果 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。另一种方法是使用普通的 dictsetdefault() 方法:

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/

相关文章:

python - 在 pyglet 中使用 gl_points 滚动星空

python - 如何使 numba @jit 使用所有 cpu 内核(并行化 numba @jit)

python - Tkinter:标签和按钮框架之间的空间太大

python-3.x - 递归遍历嵌套字典并返回第一个匹配键的值

python - 在后台运行python文件时没有输出

python - lambda 函数不关闭 Python 中的参数?

可以标记维基百科页面的 Python 库

django templates Unclosed tag on line 10 : 'if' . 寻找其中之一:endif

python - 如何允许 cxfreeze 导入 colorama?

python - Flask streaming 在完成之前不会返回响应