2013-08-28 9 views
4

j'ai écrit un module, qui sert de fichier de configuration:Pourquoi cette liste de dictionnaire Python n'a-t-elle que les clés du dictionnaire?

users = list(
      dict(
        username="x", 
        password="y" 
       ) 
      ) 

Cependant, quand j'inspecte le contenu importé de la liste, il contient les clés du dictionnaire, pas une entrée du dictionnaire:

>>> import user as userdata 
import user as userdata 
>>> userdata.users 
userdata.users 
['username', 'password'] 
>>> 
+0

Notez que 'liste (x)' est pas le même chose que '[x]'. –

+2

Ceci est une question raisonnable, et ne devrait pas être downvoted. – Marcin

Répondre

1

Vous créez la liste à partir d'un dictionnaire. Le constructeur de liste va parcourir la dict, qui donne juste les clés.

Si vous voulez une liste qui contient le dict comme un élément, vous pouvez utiliser:

[dict(username='test')] 
4

vous ne faites pas une liste de dicts, vous faites une liste des clés de dictionnaire du dictionnaire, list(dict(...)) renvoie une liste de clés:

>>> d = dict(username="x", password="y") 
>>> list(d) 
['username', 'password'] 

Probablement que vous voulez définir users cette façon:

users = [dict(username="x", password="y")] 

ou

users = [{'username': 'x', 'password': 'y'}] 
+0

Non, il veut probablement '['nom d'utilisateur': 'x', 'mot de passe': 'y'}}]'. –

+0

@LennartRegebro yup, inclus dans la réponse, merci. – alecxe

0

Essayez avec:

users = [dict(username="x",password="y")] 
print users 

si vous voulez avoir des dictionnaires gamme.

1

Son parce que lorsque vous appelez list sur un dictionnaire, il fait une nouvelle liste de seulement vos clés, qui est le même que d'utiliser l'appel de méthode de yourdictionary.keys().

0

Je ne comprends pas pourquoi vous utilisez dict() lorsque vous pouvez simplement utiliser { } ..

Vous connaissez les fonctions du dictionnaire? Sinon, je vous recommande d'essayer la fonction dir().

Il y a quelques fonctions là-dedans que vous pouvez utiliser:

dictionnaire. keys(), renvoie une liste de toutes les clés du dictionnaire.

dictionnaire. values(), renvoie une liste de toutes les valeurs du dictionnaire.

dictionnaire. items(), retourne une liste qui, dans chaque cellule, il y a 2 'variables', [0] = clé, [1] = valeur

Exemple:

d = { "First":1, "Second":2 } 
d.keys() 
>> [ "First", "Second" ] 
d.values() 
>> [ 1, 2 ] 
d.items() 
>> [ ("First", 1), ("Second", 2) ] 
Questions connexes