Python dict歧义

时间:2018-06-15 08:33:50

标签: python python-3.x list loops dictionary

我想使用Python关键字dict返回一个字典,每个单词都是给定句子的true。 代码段是:

return dict((word, True) for word in words)

现在,当两个代码都返回相同的词典时会出现歧义:

1

return dict((word, True) for word in words)

2

return dict([(word, True) for word in words])

为什么第二个片段不会返回带有单词列表的dict?

1 个答案:

答案 0 :(得分:4)

这两个片段基本上与:

相同
return dict.fromkeys(words, True)

这是一个映射,其中键是words中的项目,值为True。

dict类也会使用(key, value)对的迭代,这就是您在这两个片段中创建的内容。

在第一个中,它是一个生成器表达式,因此并非所有项目都是一次创建的,但它们是在迭代时创建的。

第二个是列表压缩,因此创建一个列表以开始,并创建所有项目并将其放入列表中。

在任何一种情况下,dict都会看到一个可迭代的。