2017-08-20 2 views
0

複雑な変数セットを追跡し、辞書内から更新しようとしています。辞書が適切なツールでない場合は、教えてください。辞書内のトラッカー変数を更新する

a = 1 
b = 1 
c = 1 
dict = {a: [(b, c)]} # {1: [(1, 1)]} 
a = 1 
b = 1 
c = 2 
dict = {a: [(b, c)]} # {1: [(1, 2)]} 
a = 1 
b = 2 
c = 1 
dict = {a: [(b, c), (b, c)]} # {1: [(1, 2), (2, 1)]} 
a = 2 
b = 1 
c = 1 
dict = # {1: [(1, 2), (2, 1)], 2: [(1, 1)]} 
a = 1 
b = 1 
c += 1 
dict = # {1: [(1, 3), (2, 1)], 2: [(1, 1)]} 

、これは実行可能なPythonコード、私はを追跡しようとしている4つの手順の一例に過ぎませんのでご注意ください。変更があった場合、新しいキーが必要です。bが変更された場合、aの適切なキーに新しい値のペアが必要です.cが変更された場合、a:(b、c)の既存のペアを更新します。

カップルより多くの例は、既存の辞書を与えられた:

a = 2 
b = 4 
c = 1 
dict = # {1: [(1, 3), (2, 1)], 2: [(1, 1), (4, 1)]} 
a = 6 
b = 3 
c = 1 
dict = # {1: [(1, 3), (2, 1)], 2: [(1, 1), (4, 1)], 6: [(3, 1)]} 

私の質問は、私がどのように構文には考えている基本的にのために:

  • Cの値を更新する処理、あるいは場合それも可能です。既存のペア

を置き換えることなく、新しいペア(B、C)既存のキーへの追加

  • さて、誰かが..私が試したものを見るように頼まので、私は明らかに最初のいずれかを行うことができます。 dict [a] = [(b、c)]

    bが変更された場合、既存の[(b、c)]のペアを置き換えずに既存のキーに追加する方法はわかりません 変更、私はどのようにキー内のペア内の値の算術演算を行うか分からない。 申し訳ありませんが、私はかなり新しく、これはたぶん構文の質問です。

  • 答えて

    1

    いかなる理由がdictdictのSを使用しないように、例えば:

    >>> d = {1: {1: 1}} 
    >>> d[1][1] = 2 
    >>> d 
    {1: {1: 2}} 
    >>> d[1][2] = 1 
    >>> d 
    {1: {1: 2, 2: 1}} 
    
    +0

    うん、これはおそらく非常によく仕事ができる、私は彼を試してみましょう。ありがとう。 – cccczzz

    +0

    これは完全に機能していて、私が望む正確な出力のために辞書をタプルのリストに戻すのは非常に簡単でした。ありがとう! – cccczzz