Python

2016-03-26 8 views
0

'daki varolan bir sözlüğe nasıl bir ekleme eklerim Bunun bir yinelenen soru olduğunu sanmıyorum, çünkü varolan bir sözlüğe eklemem gerekmediğinden, yeni bir tane oluşturmam. 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) 

çağrı durumu dinamiktir bazı test fonksiyonlarının sonuçlarını toplayarak için daha iyi bir Python desen var mı? Benim durumumda, ayrıştırıcının sonuçları üzerinde çalışmak için bir takım testlerim var. İfadenin türüne bağlı olarak bazı testler (yöntemler) çalıştırılmalı, ancak diğerleri yapılmamalıdır. Çalışma saatine kadar hangisine ihtiyaç duyulacağını bilmiyorum, ancak hangisinin başarısız olduğunu belirtebilmek istiyorum.

cevap

1

Bu işe yapacağız: anahtar ve değer olarak ikinci olmanın başlığın ilk değerle results dicti güncelleyebilir

results = dict() 

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

.

+0

Ahh, Tuple'daki güncellemeyi doğrudan (veya bir liste) kullanmaya çalışıyordum. Teşekkürler. – BrianHVB

+0

Merhaba @BrianHVB bu veya herhangi bir cevap sorunuza çözüm bulduysa, lütfen onay kutusunu işaretleyerek [kabul ediyorum] (http://meta.stackexchange.com/q/5234/179419). Bu, bir çözüm bulduğunuz ve hem yanıtlayıcıya hem de kendinize bir takım saygınlık kazandıran daha geniş bir topluluğa işaret eder. Bunu yapmak için bir zorunluluk yoktur. – Bharel

+1

Anladığım kadarıyla, "dict" biraz fazladır, results.update ((func1(), func2(), func5())) da çalışır. – bereal