Python字典的迭代

写代码有很多细节,但是多数时候我们按照惯例——大多数优秀软件的写作风格就可以了。

Python是一种风格没有太多流派的语言。

关于字典的遍历。我见过好几种。真实经历中也发生了一些不愉快的争执。

比如我写这样的字典遍历

for key in d:
     ....

其实是很普遍的写法。

曾经遇到过一些资深的老人,他们认为“不清晰”,可读性差,硬杠要改成

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

这种追求所谓可读性,你又如何反驳,没有什么理由——但是我们在优秀的代码库中,确实发现很多简洁,一眼看懂的代码——lambda 表达式,闭包。

while else ; for else 这样的结构。
还有一些令人颇感疑惑的装饰器——比如 attr.s()

可读性到底是什么?没有太多的标准,但是经常会被一些老资历的的人用在他批评没见过,或者不喜欢的代码场景中,让人感觉有点遗憾……

另外字典的迭代还有直接取key ,value值的
应该是这样

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

高效简洁。但是写成这样应该也可以工作

for k in d:
    k, d[k] 

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

我个人绝对倾向用 for k in d: 代替 for k in d.keys().

虽然本质区别不大,但是简洁优雅,符合 python推崇的编码理念。
如果要说这样不清晰,那是因为你对 for k in d: 的语义没有习惯。

可读性差,是歧义和不明确带来的,而不是简洁带来的。
一种符号如果能用最少的字符表达确切的含义,为什么不使用它呢?

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容