我想创建一个Python的字典列表。创建列表的常用方式适用于我。那是mylist = [{1:1},{2:2}]
Python - 创建一个字典列表
但是,当我尝试创建使用range()
功能,mylist = [a:a for a in range(10)]
的理解我得到语法错误。
但令我惊讶的是,如果我以同样的方式构建一套,它会按预期工作。 myset = {a:a for a in range(10)}
我可以知道为什么这样吗?我使用Python3
我想创建一个Python的字典列表。创建列表的常用方式适用于我。那是mylist = [{1:1},{2:2}]
Python - 创建一个字典列表
但是,当我尝试创建使用range()
功能,mylist = [a:a for a in range(10)]
的理解我得到语法错误。
但令我惊讶的是,如果我以同样的方式构建一套,它会按预期工作。 myset = {a:a for a in range(10)}
我可以知道为什么这样吗?我使用Python3
我想你想是这样的:
mylist = [{a:a} for a in range(10)]
你忘了{
和}
。
在第二个例子中,你myset
是一个字典,没有一套:
In [8]: type(myset)
Out[8]: dict
在这个例子中,{
和}
表示dictionary comprehension,不设置理解。
你错过了你的列表中理解一个字典创建:
mylist = [{a:a} for a in range(10)]
看起来这就是我们所说的一个很好的问题;它明显需要更多的赞扬,因为缺少研究工作和使用错误的术语。 – vaultah 2015-02-11 06:59:25
您的Python语句'myset = {a:a在范围内(10)}'不会构造'set'而是'dict'。你有它的价值,你可以通过索引访问键,例如,'myset [5]'返回值'5',而相比之下,索引'set'数据结构引发'TypeError',因为_“ 'set'对象不支持索引“_”。如果你想在你的代码中拥有一个_set理解,你必须写更简单的'myset = {a for a range(10)}'。 – gboffi 2015-02-11 07:02:27