2016-03-26 14 views
0

これは重複する質問ではありません。既存の辞書に追加する必要があるため、新しい辞書を作成する必要はありません。Pythonで既存の辞書にタプルを挿入するには

results = dict() 

if xxx: 
    (rslt_string, rslt_msg) = func1 
    (rslt_string, rslt_msg) = func2 
    (rslt_string, rslt_msg) = func5 
if yyy: 
    (rslt_string, rslt_msg) = func3 
    (rslt_string, rslt_msg) = func5 
if zzz: 
    (rslt_string, rslt_msg) = func2 
    (rslt_string, rslt_msg) = func5 

# How do I add each tuple to the results dict with rslt_string being the key and rslt_msg being the value so that I can do this below? 
# Overwriting is ok (good even) if identical key 

for (name, msg) in results: 
    if msg is not "": 
     test_failed(name) 

呼び出しステータスが動的であるいくつかのテスト関数の結果を集約するためのより良いPythonパターンがありますか?私の場合は、パーサーの結果を実行するためにいくつかのテストがあります。表現のタイプによっては、いくつかのテスト(メソッド)を実行する必要がありますが、他のテストは実行しないでください。私は実行時まで必要なものは何か分かりませんが、もしあればどれが失敗するかを記録したいと思います。うまくいく

答えて

1

results = dict() 

if xxx: 
    results.update((func1(), func2(), func5())) 
if yyy: 
    results.update((func3(), func5())) 
if zzz: 
    results.update((func2(), func5())) 

あなたはタプルの最初の値は、キーと値である第2のものでresults辞書を更新することができます。

+0

ああ、私はタプルで直接(またはリスト)の更新を使用しようとしていました。ありがとう。 – BrianHVB

+0

こんにちは@BrianHVBあなたの質問が解決された場合は、チェックマークをクリックして[受諾](http://meta.stackexchange.com/q/5234/179419)を検討してください。これは、あなたが解決策を見つけ出し、回答者とあなた自身の両方に評判を与えていることを広範なコミュニティに示します。これを行う義務はありません。 – Bharel

+1

私が理解する限り、 'dict'はやや冗長です。' results.update((func1()、func2()、func5())) 'も動作します。 – bereal

関連する問題