2010-03-31 10 views
2

J'ai écrit la fonction suivante. Il renvoie un dictionnaire vide quand il ne devrait pas. Le code fonctionne sur la ligne de commande sans fonction. Cependant, je ne peux pas voir ce qui ne va pas avec la fonction, donc je dois faire appel à votre intelligence collective.python dict.fromkeys() retourne vide

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

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

Il retourne un dict {} vide où je me attends { 'john': 0, 'mabel': 0}.

C'est probablement très simple mais je ne vois pas la solution.

+1

Si vous aimez une réponse, assurez-vous de la marquer comme la réponse acceptée. Cela donne des points de réputation au répondeur et permet à tout le monde de savoir que vous ne cherchez pas une meilleure réponse. –

Répondre

3

Vous devez réduire le corps de la fonction à

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

fromkeys est une méthode de classe, n'affecte donc pas exemple, il peut être appelé (il est préférable de l'appeler la classe - qui est plus claire !), plutôt retours le nouveau dictionnaire il construit ... et c'est exactement le dictionnaire même que vous voulez revenir à -)

11

fromkeys est une méthode de classe, ce qui signifie

newusr.fromkeys(userlist, 0) 

est exactement la même chose que d'appeler

dict.fromkeys(userlist, 0) 

deux qui retour un dictionnaire des clés de userlist. Vous devez l'assigner à quelque chose. Essayez ceci à la place.

newusr = dict.fromkeys(userlist, 0) 
return newusr 
+0

Merci, c'était vraiment rapide. Les classes et l'instanciation me semblent encore un peu étrangères. – slooow

+1

@slooow: Vous devriez accepter cette réponse si elle vous a aidé (cochez la case verte à côté de la question). –

2

Il devrait être:

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

De l'documentation:

fromkeys() est une méthode de classe que retours un nouveau dictionnaire.

Questions connexes