python - 如何正确更新dict中的dict?(Python)
问题描述
我有以下代码:
some = {}
stat = {'matches_played': 0, 'won': 0, 'draws': 0, 'loss': 0, 'points': 0}
some = {'Arsenal': stat}
some.update({'Chelsea': stat})
some['Arsenal']['won'] += 1
some['Chelsea']['loss'] += 1
print(some)
结果是:
{'Arsenal': {'matches_played': 0, 'won': 1, 'draws': 0, 'loss': 1, 'points': 0},
'Chelsea': {'matches_played': 0, 'won': 1, 'draws': 0, 'loss': 1, 'points': 0}}
但是我需要
{'Arsenal': {'matches_played': 0, 'won': 1, 'draws': 0, 'loss': 0, 'points': 0},
'Chelsea': {'matches_played': 0, 'won': 0, 'draws': 0, 'loss': 1, 'points': 0}}
你能解释一下,为什么会这样?
解决方案
stat
作为参考传递给关键的“切尔西”和“阿森纳”。您需要创建它的副本。
some = {}
stat = {'matches_played': 0, 'won': 0, 'draws': 0, 'loss': 0, 'points': 0}
some = {'Arsenal': stat}
some.update({'Chelsea': stat.copy()}) # <---- fix it here
some['Arsenal']['won'] += 1
some['Chelsea']['loss'] += 1
print(some)
推荐阅读
- javascript - 通过 VBA 从 IE 页面的下拉列表中选择一个值
- spring-batch - Spring Batch 死锁LoserDataAccessException
- javascript - 如何使用javascript从对象数组中提取对象的值
- google-apps-script - 无法从 G Suite Marketplace 安装我的插件
- variables - 何时使用 $path、$dir 或 $file 作为变量名
- sql - 如何从 Oracle 中的日期时间戳中删除日期?
- php - 登录后更改页面
- memory-management - 在特定内核上运行的进程
- python - 无法在 VS Code 中选择虚拟环境
- typescript - 具有多种类型的函数声明