$ python2.7 -m timeit 'd={}'
10000000 loops, best of 3: 0.0331 usec per loop
$ python2.7 -m timeit 'd=dict()'
1000000 loops, best of 3: 0.19 usec per loop
爲什麼要使用一個呢?「d = dict()」和「d = {}」之間的區別
$ python2.7 -m timeit 'd={}'
10000000 loops, best of 3: 0.0331 usec per loop
$ python2.7 -m timeit 'd=dict()'
1000000 loops, best of 3: 0.19 usec per loop
爲什麼要使用一個呢?「d = dict()」和「d = {}」之間的區別
如果人們使用(只)dict()
以上(只){}
,它通常是因爲他們不知道{}
(這是相當一個壯舉),或者是因爲他們認爲這是更清晰(這是主觀的,但不常見。)
有事情可以dict
做,你不能與{}
怎麼做,比如把它傳遞的東西,希望馬蹄蓮如collections.defaultdict(dict)
。還有的事實,你可以調用dict
與關鍵字參數,其中一些人喜歡:
>>> dict(spam=1, ham=2)
{'ham': 2, 'spam': 1}
就個人而言,我更喜歡字典文字語法,因爲它工作得更好,當你想使用無效的標識符鍵:
>>> dict(pass=1)
File "<stdin>", line 1
dict(pass=1)
^
SyntaxError: invalid syntax
>>> dict('ham and eggs'=1)
File "<stdin>", line 1
SyntaxError: keyword can't be an expression
(和混合風格,只是因爲某些鍵不是有效的標識符,呸。)
我那些誰喜歡的話標點符號之一 - 它是我挑選過的Python的原因之一Perl,例如。 「沒有大括號的話,生活會更好」(一個古老的Python格言,它帶着一個微笑的少年的卡通穿上了一件T恤;-),畢竟(當然,最初是爲了分組而提到大括號和縮進),但是,嘿, ,括號是括號! - )。
「支付」幾納秒(爲了使用清晰,可讀的簡短字代替大括號,括號和whatnots)通常是可以承受的(主要是查找內置命名空間的成本,每次使用內置類型或函數時都付費,並且可以通過將循環中的某些查找提升爲輕微優化)。
所以,我一般誰喜歡寫dict()
爲{}
,list(L)
代替L[:]
以及list()
爲[]
,tuple()
爲()
,等等一個 - 只爲拼讀一般的風格偏好碼。當我在使用不同風格的現有代碼庫上工作時,或者當我的新項目中的隊友以另一種方式擁有強烈的偏好時,我可以接受這一點,當然(不是沒有嘗試在隊友的情況下進行一點傳福音,儘管;-)。
」將某些查找從循環中提取出來 - 這意味着什麼? – Tshepang 2010-04-30 15:48:28
@Tshepang,例如代替'for in x:f(dict())'('len(x)'lookup for name'dict'),首先綁定一個本地'd = dict'在循環外部,然後'for i in x:f(d())',它對名字'd'做了一個更快的_local_查找)。這是一種基本的Python技術,用於優化某些循環(當然,通過分析),證明它們是性能瓶頸。 – 2010-04-30 16:25:15
順便說一句(當然,並不涉及這個問題),Unladen Swallow應該使這種成語(d = dict)不必要:) – rbp 2010-04-30 16:56:47
像托馬斯說,我使用dict(),所以我可以指定關鍵字。特別是如果我手動構建一個大的字典來進行數據初始化或者不需要:使用關鍵字語法可以爲每個元素節省兩個擊鍵(以及相關的視覺混亂)。
Doug Hellmann寫了一個詳盡的comparison的性能差異。
不,''dict'在'__builtin__'中。 – 2010-04-30 15:13:56
@MikeGraham是的,但在大多數情況下'__builtins__'是'__builtin__'的別名「 – jamylak 2013-06-03 10:39:42