在迭代字典時使用第一塊代碼而不是第二塊代碼有什麼好處?.items()和.keys()之間的區別
for k, v in mydict.items():
if v == None:
mydict[k] = ''
和
for k in mydict.keys():
if mydict[k] == None:
mydict[k] = ''
在迭代字典時使用第一塊代碼而不是第二塊代碼有什麼好處?.items()和.keys()之間的區別
for k, v in mydict.items():
if v == None:
mydict[k] = ''
和
for k in mydict.keys():
if mydict[k] == None:
mydict[k] = ''
第一種方法可以說是更清晰,更易於閱讀,所以我總是推薦它優於後者。
這就是說,在一個簡單的情況下,這樣的,更好的選擇是一個dictionary comprehension:
{k: v if v is not None else "" for k, v in mydict.items()}
值得一張紙條,上面第二個例子可以簡化,如迭代直接在mydict
將提供鑰匙,所以不需要mydict.keys()
(這主要用於當你想爲另一個目的而不是迭代的密鑰集合)。 (由於jathanism在評論中指出,在舊版本的Python(2.x)中,使用iteritems()
比items()
更好,因爲它不會生成列表 - 像我這樣的3.x用戶並不需要因爲items()
產生一個懶惰的字典視圖。)
在任何情況下,請注意'if ... is None:'is recommended。 – delnan
作爲一個註釋,單詞*代碼*在這裏沒有意義(*代碼*尤其聽起來很奇怪),更好的措詞可能是*哪一段代碼更好?*。代碼本身就是複數 - 很像水。談論許多* waters *或* water *是沒有意義的,而我們指的是*水體*或許多* body *。 (不要試圖成爲這裏的所有語法納粹,只是我看到了很多,所以我想我會提供一些建議)。 –