idk*_*idk 6 python dictionary for-loop key
.keys()Python中带方法和不带方法的字典中的for循环有什么区别.keys()?
thisdict = {
"brand": "Ford",
"model": "Mustang",
"year": 1964
}
for i in thisdict:
print(i)
for i in thisdict.keys():
print(i)
Run Code Online (Sandbox Code Playgroud)
有什么不同?
来自Python文档:
\n\n\n\n\n键()
\n\n返回字典\xe2\x80\x99s 键的新视图。请参阅视图对象的文档。
\n
并从上面的链接:
\n\n\n\n\ndict.keys()、dict.values() 和 dict.items() 返回的对象是视图对象。它们提供了字典\xe2\x80\x99s条目的动态视图,这意味着当字典更改时,视图会反映这些更改。
\n\n字典视图可以迭代以生成各自的数据,并支持成员资格测试 [...]
\n
如果没有keys()方法,您只需对可用键进行迭代器(这可能是首选),正如您在此处看到的那样(与第二个相同,但不加载和调用keys方法):
\n\nIn [1]: import dis \n\nIn [2]: dis.dis("for i in {None: None}: print(i)") \n 1 0 LOAD_CONST 0 (None)\n 2 LOAD_CONST 0 (None)\n 4 BUILD_MAP 1\n 6 GET_ITER\n >> 8 FOR_ITER 12 (to 22)\n 10 STORE_NAME 0 (i)\n 12 LOAD_NAME 1 (print)\n 14 LOAD_NAME 0 (i)\n 16 CALL_FUNCTION 1\n 18 POP_TOP\n 20 JUMP_ABSOLUTE 8\n >> 22 LOAD_CONST 0 (None)\n 24 RETURN_VALUE\n\nIn [3]: dis.dis("for i in {None: None}.keys(): print(i)") \n 1 0 LOAD_CONST 0 (None)\n 2 LOAD_CONST 0 (None)\n 4 BUILD_MAP 1\n 6 LOAD_METHOD 0 (keys)\n 8 CALL_METHOD 0\n 10 GET_ITER\n >> 12 FOR_ITER 12 (to 26)\n 14 STORE_NAME 1 (i)\n 16 LOAD_NAME 2 (print)\n 18 LOAD_NAME 1 (i)\n 20 CALL_FUNCTION 1\n 22 POP_TOP\n 24 JUMP_ABSOLUTE 12\n >> 26 LOAD_CONST 0 (None)\n 28 RETURN_VALUE\nRun Code Online (Sandbox Code Playgroud)\n\n如果您只想迭代字典的键,则无需调用keys()方法,它可以为您提供字典\xe2\x80\x99s条目的动态视图。
\n| 归档时间: |
|
| 查看次数: |
799 次 |
| 最近记录: |