首页 > 解决方案 > 如何为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]}

标签: pythondictionary

解决方案


这个问题的根源在于我定义字典的方式。喜欢我帖子下的@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


推荐阅读