通过Dict理解创建一个包含列表值的字典?

时间:2018-02-25 08:35:41

标签: python python-3.x dictionary dictionary-comprehension

我们说我有

a = [1,2,3,4,5]

我试图创建一个字典

dictObj = { (key,[]) for key in a}

但是我收到了一个不可用的类型错误。这对我来说似乎很奇怪,因为如果值列表是正确的,它会很好吗?我想知道是否有人能告诉我创建哈希表的正确语法,其中所有键都是a中的元素,每个键都指向一个空数组。

3 个答案:

答案 0 :(得分:5)

字典理解中的键和值不表示为元组,它们只是由:

分隔
dictObj = {key:[] for key in a}

答案 1 :(得分:3)

你是说这个吗?

dictObj = { key:[] for key in a}

答案 2 :(得分:2)

如果你想保留你拥有的东西,你需要包裹dict()而不是大括号:

dict((key, []) for key in a)

与其他人给出的相同,但语法略有不同。

另外,如果你想用空列表初始化词典,你应该看一下collections.defaultdict,它会将你的键初始化为你选择的任何类型。这可以防止您自己必须这样做。

以下是一个示例用法:

from collections import defaultdict

d = defaultdict(list)
a = [1,2,3,4,5]

for key in a:
    print(key, ':', d[key])

其中打印出每个项目的初始化列表,如下所示:

1 : []
2 : []
3 : []
4 : []
5 : []

然后你可以从这里为每个键添加项目。