python - 如何为python字典中的每个特定键添加值?(不要更新另一个密钥)
问题描述
就我而言,我有一本这样的字典
dic_ = {'btcusd': [-1.0, -1.0],
'usdjpy': [-1.0, -1.0]}
例如,我想更新密钥“usdjpy”,我使用此代码
dic_['usdjpy'].append(1)
但是,它会更新此字典中的所有其他键并给出如下结果
{'btcusd': [-1.0, -1.0, 1],
'usdjpy': [-1.0, -1.0, 1]}
那么如何解决这个问题呢?
我的愿望结果如下
{'btcusd': [-1.0, -1.0],
'usdjpy': [-1.0, -1.0, 1]}
解决方案
这个问题的根源在于我定义字典的方式。喜欢我帖子下的@yatu评论。例如,如果我像这样生成字典
symbol_list = ['a', 'b, 'c', 'd']
dict_ = dict(zip(symbol_list, [list()]*len(symbol_list)))
.append()
然后使用普通方法追加。它将附加于此中的所有值列表dict_
但是如果dict_
以另一种方式创建
symbol_list = ['a', 'b', 'c', 'd']
dict_ = {}
for x in range(0, len(symbol_list)):
dict_[symbol_list[x]]= list()
然后该append()
方法将按需要工作
原因在这篇博文中有详细解答:List of lists changes reflect across sublists unexpectedly
推荐阅读
- python - 如何在 pandas 的同一个 Excel 列表中组合来自不同表的数据?
- android - 检测应用程序是否从华为应用市场安装
- python-3.x - XML 日志文件打印到漂亮
- javascript - JavaScript IntersectionObserver rootMargin 不起作用
- python - 使用两个相同的列信息,合并第三列
- r - 如何从多个 .txt 文件创建小标题,在列中保留文件名,以及使用文件名将文件分类?
- java - 找不到 org.springframework.boot:spring-boot-starter-cloud-connectors
- flutter - 如何在 Flutter 中的 ExpansionPanellist 中给出扩展面板之间的间距?
- php - 没有定义外键约束的雄辩关系
- linux - Linux删除第一行空格