2016-03-26 2 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())) 

Вы можете обновить results Dict с первым значением кортежа, являющегося ключом, а второй является значением.

+0

Ahh, я пытался использовать обновление непосредственно на кортеже (или в списке). Благодарю. – BrianHVB

+0

Привет @BrianHVB, если этот или любой ответ решил ваш вопрос, пожалуйста, рассмотрите [принятие его] (http://meta.stackexchange.com/q/5234/179419), нажав на галочку. Это указывает более широкому сообществу, что вы нашли решение и дали некоторую репутацию как самому, так и самому себе. Это не обязательно. – Bharel

+1

Насколько я понимаю, 'dict' немного избыточно,' results.update ((func1(), func2(), func5())) 'тоже работает. – bereal

Смежные вопросы