2016-03-30 17 views
-1

私は辞書を使っていますが、その中の値を置き換えるのではなく、新しい値を追加したいのですが、今は私の現在の値を辞書の中の新しい値で置き換えています。私は同じソースの下の値の別のセットを追加したい、同じ文書辞書は前の値を置き換えます

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

のための新しいsuspicious_keystartPosendPosの追加であることの後にどのような変更

サンプル値

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

疑わしいキー、startPos、endPos

私はupdate()で試しましたが、 rk。

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

どうすればよいですか?

+0

それで 'dict.update()'は "うまくいかない"ことをどのように知っていますか?あなたはどこで何を期待しているのですか?代わりに何を得ましたか? –

答えて

1

dict.update()は間違った辞書を更新します。それは効果的にと同じものをと同じものに割り当てて、suspicious_keyというキーに割り当てます。今

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

startPosと:

アップデート辞書代わりにsuspicious_keyキー参照:

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

そのキーがあなたのために空の辞書を挿入するためにdict.setdefault()メソッドを使用して、欠落している可能性があり場合endPosキーは、ネストされた辞書を完全に置き換えるのではなく、ネストされた辞書に追加されます。

+0

ええ、私が正しく理解すれば、鍵は同じでなければなりません。私の場合、私は新しいsuspicious_keys、startPos、endPosだけでなく、startPos、endPosを追加したいと思います。 suspicious_keyは決して失われませんが、以前のものとは異なるでしょう –

+0

@PetrosKyriakou:あなたが期待しているものが明確でないため、サンプルの入力と出力*を質問に追加してください。いくつかのサンプル入力と出力では、違いの簡単なデモを作成することもできます。 –

0

辞書に登録されているオブジェクトのリストは必要ありませんか?

私は、各ソースについて、suspicious_keyによって識別されるオブジェクトの束を取得したいと仮定します。あなたは辞書[ソース]を頼むとき、あなたがオブジェクトの一覧を取得する結果として

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

:その後、

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

あなたは次の項目を追加したいとき:

最初の項目を追加します。

+0

あなたの入力をありがとう、今私はこれを得るが、 'dict'オブジェクトには属性 'append'がありません –

+0

appendメソッドは、辞書に格納されたリストオブジェクトのフォームになります –

関連する問題