字典替换以前的值

时间:2016-03-30 14:01:15

标签: python dictionary

我正在使用字典但不是替换里面的值我想为它添加新值,下面就是我现在用新的字符替换字典中的现有值。

样本值

source: something.txt
    suspicious_key: GFATGTFBFD
        startPos: 23
        endPos:32

之后的更改是为同一文档添加了新的suspicious_keystartPosendPos

source: something.txt

    suspicious_key: GFATGTFBFD
        startPos: 23
        endPos:32

    <<<<Second entry under same key>>>>

    suspicious_key: GKDTFSFSAS
        startPos: 32
        endPos:45

dictionary[source] = {suspicious_key: {"startPos":index_start, "endPos": index_end}}

我想在同一来源下为可疑密钥添加另一组值,startPos,endPos

我试过update(),但似乎没有用。

dictionary[source].update({suspicious_key: {"startPos":index_start, "endPos": index_end}})

我该怎么办呢?

2 个答案:

答案 0 :(得分:1)

你的dict.update()更新了错误的词典;它有效地与分配给suspicious_key密钥完全相同

更新suspicious_key密钥引用的字典:

dictionary[source][suspicious_key].update({"startPos":index_start, "endPos": index_end})

如果该键可能丢失,请使用dict.setdefault()方法为您插入空字典:

dictionary[source].setdefault(
    suspicious_key, {}).update(
    {"startPos":index_start, "endPos": index_end})

现在startPosendPos键将添加到嵌套字典中,而不是完全替换嵌套字典。

答案 1 :(得分:0)

您只是想要存储在字典中的对象列表吗?

我假设你想要获得一系列由suspicious_key识别的对象。

添加第一项:

dictionary[source] = [{suspicious_key: {"startPos":index_start, "endPos": index_end}}]

然后当你想要添加下一个项目时:

dictionary[source].append({suspicious_key: {"startPos":index_start, "endPos": index_end}})

因此,当您要求字典[来源]时,您将获得一个对象列表。