2014-01-17 2 views
-1

Я запускаю следующий код кода, когда получаю эту ошибку: SyntaxError: не может назначить вызов функции. Может ли кто-нибудь придумать решение и возможную проблему?SyntaxError: не может назначить вызов функции в Python (начинающий)

def update_contact_number(contacts, contact_name, old_number, new_number): 
    if contact_name in contacts:  
     lis = list(contacts[contact_name].values()) 
     lis[0]=new_number 
     contacts[contact_name].values()=tuple(lis) 
     return True 
    else: 
     return False 
+2

Проблема в том, что вы на самом деле не поняли, что вы пытаетесь сделать. –

+2

Просьба описать, что может быть 'contacts [contact_name]', и как именно вы хотите его обновить. –

ответ

3

Линия:

contacts[contact_name].values()=tuple(lis) 

Не синтаксически корректен.

Что касается того, как достичь того, чего вы хотите ... вы сделали не заявить, что вы хотите, чтобы никто не мог вам помочь.

Похоже, вы хотите изменить номер контакта, но тогда я не понимаю, почему contacts[contact_name] будет dict. Также отметим, что, если это правда:

lis[0]=new_number 

Здесь lis[0] в основном случайное значение, содержащееся в этом словаре, потому что порядок ключей и значений словаря является неопределенным.

+0

Не случайно, но [произвольно] (http://stackoverflow.com/q/2860339/). –

+0

@ IgnacioVazquez-Abrams Ну, так как в последних версиях python есть хэш-рандомизация, это действительно случайное. Он произволен только во время * одиночного * выполнения программы, но запуск программы несколько раз может дать разные результаты. – Bakuriu

+0

Какую помощь я искал, ища советы о том, почему код не работал. Язык ошибки слишком загадочен, чтобы разобраться. Словарь и порядок определялись как глобальная переменная. Я только что опубликовал фрагмент, в котором были ошибки. У тебя все получилось, спасибо! – Shubham

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