Python字典的迭代

寫代碼有很多細節(jié),但是多數(shù)時候我們按照慣例——大多數(shù)優(yōu)秀軟件的寫作風(fēng)格就可以了。

Python是一種風(fēng)格沒有太多流派的語言。

關(guān)于字典的遍歷。我見過好幾種。真實經(jīng)歷中也發(fā)生了一些不愉快的爭執(zhí)。

比如我寫這樣的字典遍歷

for key in d:
     ....

其實是很普遍的寫法。

曾經(jīng)遇到過一些資深的老人,他們認為“不清晰”,可讀性差,硬杠要改成

for key in d.keys():
     ...

這種追求所謂可讀性,你又如何反駁,沒有什么理由——但是我們在優(yōu)秀的代碼庫中,確實發(fā)現(xiàn)很多簡潔,一眼看懂的代碼——lambda 表達式,閉包。

while else ; for else 這樣的結(jié)構(gòu)。
還有一些令人頗感疑惑的裝飾器——比如 attr.s()

可讀性到底是什么?沒有太多的標準,但是經(jīng)常會被一些老資歷的的人用在他批評沒見過,或者不喜歡的代碼場景中,讓人感覺有點遺憾……

另外字典的迭代還有直接取key ,value值的
應(yīng)該是這樣

for k, v in d.items():
    ...

高效簡潔。但是寫成這樣應(yīng)該也可以工作

for k in d:
    k, d[k] 

效率上,多了一次存取。
還有一些 for k, v in list(d.items()): 屬于有點荒唐了。

我個人絕對傾向用 for k in d: 代替 for k in d.keys().

雖然本質(zhì)區(qū)別不大,但是簡潔優(yōu)雅,符合 python推崇的編碼理念。
如果要說這樣不清晰,那是因為你對 for k in d: 的語義沒有習(xí)慣。

可讀性差,是歧義和不明確帶來的,而不是簡潔帶來的。
一種符號如果能用最少的字符表達確切的含義,為什么不使用它呢?

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容