2012-04-14 2 views
0

я определяю функциюобновление словаря ввода в питоне

def update(dictionary,key,value): 
    dictionary[key] = value 
    # if i do print dictionary... it still shows the original value? 

Я хочу обновить словарь ввода в основном вызове

Так что это основная функция я писал:

def update_mapping(mapping_dict,check_word,solution_word): 
    #print "here " 
    #new_mapping_dict = {} 
    for i,ele in enumerate(check_word): 
     if mapping_dict.has_key(ele): 
      if mapping_dict[ele] == "*": 
       mapping_dict[ele] = solution_word[i] 

       print ele, solution_word 
    print mapping_dict,check_word,solution_word 

В основном я вводил слово с орфографической ошибкой, а затем слово с ошибкой имело некоторое сопоставление. Я делаю это отображение в словаре .. Like

mapping_dict ={"a":"x"...."s":"*"...} 

Таким образом, все известные алфавитов которых отображение было обнаружено у законного пар ключей значения алфавита .. для алфавитов, для которых я гавань нашел правильное отображение, я их замены «*» и I я нашел их с некоторым алгоритмом (инвертированный индекс)

И как я их нашел, я хочу обновить словарь?

+3

Покажите нам больше контекста! Код, который вы предоставили до сих пор, выглядит хорошо (хотя лично я бы не добавил его в функцию, так как совершенно очевидно, что делает завернутая строка). – Cameron

+0

Подробнее о Cameron, если обновить словарные ключи так же просто, как обновление одной пары ключ-значение за раз, просто выполните 'my_dict [key] = value', это более эффективно. – CppLearner

+0

Привет. Спасибо за комментарии ... но это был просто пример. Я делаю еще несколько проверок :) – Fraz

ответ

1
>>> test = {"test": 1} 
>>> def update(dictionary,key,value): 
...  dictionary[key] = value 
... 
>>> update(test, "test", 2) 
>>> test 
{'test': 2} 

Ваша проблема должна быть в другом месте - это работает.

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