字典替换以前的值

2024-09-29 00:14:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用一个字典,但是我不想替换字典中的值,而是想向其中添加新值,下面是我现在拥有的,它用新值替换字典中现有的值

样本值

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}})

我该怎么办


Tags: keytxtsourceindexdictionary字典updatestart
2条回答

难道你不想把对象的列表存储在你的字典里吗

我假设对于每个源,您都希望获得一组由可疑的密钥标识的对象

添加第一项:

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

然后,当您要添加下一项时:

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

因此,当您请求dictionary[source]时,您将得到一个对象列表

你的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键将被添加到嵌套字典中,而不是完全替换嵌套字典

相关问题 更多 >