2013-08-28 149 views
4

我寫了一個模塊,這是作爲一個配置文件:爲什麼這個Python的字典列表只有字典的關鍵字?

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

然而,當我檢查名單的進口內容,包含詞典的按鍵,而不是一個字典詞條:

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

注意,'列表(x)'是不與[[x]'相同]。 –

+2

這是一個合理的問題,不應該被低估。 – Marcin

回答

1

您正在從字典創建列表。列表構造函數將迭代字典,它只是給出鍵。

如果你想包含字典作爲一個元素的列表,你可以使用:

[dict(username='test')] 
4

你最好不要讓類型的字典列表,你這是從詞典鍵列表,list(dict(...))返回鍵列表:

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

也許你要定義users這樣:

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

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

不,他可能想要'[{'username':'x','password':'y'}]'。 –

+0

@LennartRegebro yup,包括在答案中,謝謝。 – alecxe

0

嘗試用:

​​

,如果你想擁有的字典數組。

1

這是因爲當您在字典上調用list時,它會創建一個只有您的密鑰的新列表,這與使用方法調用yourdictionary.keys()相同。

0

我不明白爲什麼你會使用dict()時,你可以簡單地使用{ } ..

你知道字典的功能?如果沒有,我建議你嘗試dir()函數。

有在那裏,你可以使用一些功能:

字典。 keys(),返回字典中所有鍵的列表。

字典。 values(),返回字典中所有值的列表。

字典。 items(),返回一個列表,其在每個小區中有2 '變量',[0] =鍵,[1] =值

實施例:

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