2016-05-17 5 views
0

key, value pairを更新するには、他のkey, value pairがtrueの場合はどうすればよいですか?別個のキー値ペアがTrueの場合は値を更新してください

bank = { 
    "88386180860608512" : {  # This is a unique id number 
     "balance" : 100, 
     "name" : "Aehnon" 
    }, 
    "88469127777243136" : {  # This is a unique id number 
     "balance" : 100, 
     "name" : "Balanceofevil" 
    }, 
    "89741285950246912" : {  # This is a unique id number 
     "balance" : 3310, 
     "name" : "Sharky" 
    } 
} 

私のコードは私の名前、[「sharkyが」、「Aehnon」]のリストを与える場合、私は50で、これら二人のユーザーの残高を増やす必要があり、問題は、私は彼らを知らないということです"ID番号"。

詳細については、すべての残高を、一致するkey, value(I.E. "名前":Sharkyは私のリストの名前 "Sharky"と一致しています)と一致する50で更新したいと考えています。

b = [subdict["name"] for subdict in bank.values()] 
if "Aehnon" in b: 
    print("True") 
else: 
    print("False) 

と評価されます:

は、これまでのところ、私は例のためにこれを行う場合、私は一つの名前を検証することができます知っている

True 

しかし、私はして動的にこれを行う方法がわかりませんよ残高を更新するための大きいリスト。

+0

最速/最も簡単な方法(ユニークな名前を仮定して)は、固有の番号に別のインデックスを持つことである - 例えば、{「sharkyが」:「89741285950246912」、...}) – Mike

+0

名前がありません常にユニーク。それでそれぞれがIDを持っているのです。 – Chad

+0

"Sharky":[sharky_id_1、Sharky_id_2 ...]?実際には、辞書にインデックスを追加しています。 – Mike

答えて

1

これは何ですか?

bank = { 
    "88386180860608512" : {  # This is a unique id number 
     "balance" : 100, 
     "name" : "Aehnon" 
    }, 
    "88469127777243136" : {  # This is a unique id number 
     "balance" : 100, 
     "name" : "Balanceofevil" 
    }, 
    "89741285950246912" : {  # This is a unique id number 
     "balance" : 3310, 
     "name" : "Sharky" 
    } 
} 

names = ["Sharky", "Aehnon"] 

for v in bank.values(): 
    if v["name"] in names: 
     v['balance'] += 50 

print(bank) 
+0

これは私のために働いていて、私はそれをもっと大規模に複製して確かめました。あなたはこの結論に至るあなたの思考プロセスを通して私を歩いてもらえますか? – Chad

+0

@Chad、まずすべての 'bank'サブdictsを繰り返し処理する必要があります:' for v in bank.values(): '。次に、必要な名前のリストに現在のサブ辞書の 'name'が入っているかどうかをチェックするだけです: 'if name [] in names'。もしそうなら、サブdictの 'balance'を更新することができます:' v ['balance'] + = 50' –

+0

ああ私はそれを手に入れます!返信いただきありがとうございます。 – Chad

関連する問題