python dict.fromkeys () возвращает пустое значение - PullRequest
2 голосов
/ 01 апреля 2010

Я написал следующую функцию. Он возвращает пустой словарь, когда не должен. Код работает в командной строке без функции. Однако я не вижу, что не так с этой функцией, поэтому я должен обратиться к вашему коллективному разуму.

def enter_users_into_dict(userlist):
    newusr = {}
    newusr.fromkeys(userlist, 0)
    return newusr

ul = ['john', 'mabel']
nd = enter_users_into_dict(ul)
print nd

Возвращает пустой диктант {}, где я ожидал бы {'john': 0, 'mabel': 0}.

Возможно, это очень просто, но я не вижу решения.

Ответы [ 3 ]

11 голосов
/ 01 апреля 2010

fromkeys - это метод класса, что означает

newusr.fromkeys(userlist, 0)

точно так же, как звонить

dict.fromkeys(userlist, 0)

Оба, которые возвращают словарь ключей в списке пользователей. Вы должны назначить это на что-то. Попробуйте вместо этого.

newusr = dict.fromkeys(userlist, 0)
return newusr
3 голосов
/ 01 апреля 2010

Вам нужно свернуть тело функции до

def enter_users_into_dict(userlist):
    return dict.fromkeys(userlist, 0)

fromkeys - это метод класса, поэтому не влияет ни на один экземпляр, к которому он может вызываться (лучше вызывать его в классе - это понятнее!), Скорее он возвращает новый словарь, который он создает ... и это именно тот словарь, к которому вы хотите вернуться! -)

2 голосов
/ 01 апреля 2010

Должно быть:

def enter_users_into_dict(userlist):
    return dict.fromkeys(userlist, 0)

Из документации :

fromkeys() - это метод класса , который возвращает новый словарь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...