为什么这个Python字典列表只有字典的键?

4
我编写了一个模块,它作为配置文件使用:
users = list(
             dict(
                  username="x",
                  password="y"
                  )
             )

然而,当我检查列表导入的内容时,它包含字典的键,而不是字典条目:

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

请注意,list(x)[x]不是同一件事。 - Lennart Regebro
2
这是一个合理的问题,不应该被踩。 - Marcin
5个回答

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'}]

不,他可能想要 [{'username': 'x', 'password': 'y'}] - Lennart Regebro

1
你正在从字典中创建列表。列表构造器将会迭代字典,只取键。
如果你想要一个包含该字典的列表元素,你可以使用以下语句:
[dict(username='test')]

0

尝试使用:

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

如果你想要一个字典数组。


0

我不明白为什么您要使用dict( ),而不是简单地使用{ }

您知道字典函数吗?如果不知道,我建议您尝试使用dir()函数。

这里有一些您可以使用的函数:

dictionary.keys(),返回字典中所有键的列表。

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

dictionary.items(),返回一个列表,在每个单元格中都有两个“变量”,[0]=键,[1]=值。

例如:

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

0

这是因为当你在字典上调用list时,它会创建一个仅包含键的新列表,这与使用方法调用yourdictionary.keys()相同。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接