我想創建一個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