【问题标题】:Create a Dictionary with List Values through a Dict Comprehension?通过字典理解创建包含列表值的字典?
【发布时间】:2018-08-04 22:03:00
【问题描述】:

假设我有

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

我正在尝试创建一个字典,其中

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

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

【问题讨论】:

  • 这不是你理解字典的方式。
  • 您的预期输出是什么?
  • 你的标题应该是字典理解,而不是列表理解
  • @VivekKalyanarangan。问题中已经很清楚地说明了这一点。
  • 为什么不直接使用collections.defaultdict(list)

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


【解决方案1】:

如果你想保留你所拥有的,你需要包裹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 : []

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

【讨论】:

    【解决方案2】:

    字典推导式中的键和值不表示为元组,它们只是用: 分隔

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

    【讨论】:

      【解决方案3】:

      你是这个意思吗?

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-11-23
        • 1970-01-01
        • 2016-02-27
        • 1970-01-01
        • 2019-01-16
        • 2014-04-09
        • 2019-10-10
        • 2016-06-09
        相关资源
        最近更新 更多