gpt4 book ai didi

python - 为什么 2to3 将 mydict.keys() 更改为 list(mydict.keys())?

转载 作者:太空狗 更新时间:2023-10-29 20:40:43 25 4
gpt4 key购买 nike

我正在查看包含此更改的 2to3 的输出:

-            for file_prefix in output.keys():
+ for file_prefix in list(output.keys()):

其中 output 是一个字典。

这个变化有什么意义?为什么 2to3 会这样做?

此更改如何使代码与 Python 3 兼容?

最佳答案

在 Python 3 中,.keys() 方法返回一个 View 对象而不是列表,这是为了提高效率。

在迭代的情况下,这实际上并不重要,但重要的是如果你正在做类似 foo.keys()[0] 的事情 - 你不能索引 View .因此,2to3 总是添加显式列表转换以确保任何潜在的索引都不会中断。

您可以在 View 可以正常工作的任何地方手动删除 list() 调用; 2to3 只是不够聪明,无法分辨哪种情况。

(注意 2.x 版本可以调用 iterkeys(),因为它没有索引。)

关于python - 为什么 2to3 将 mydict.keys() 更改为 list(mydict.keys())?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27476079/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com