我想知道for
循环究竟是如何访问字典中的键的?
它会调用dict.keys()
并遍历该列表吗?
我问的原因是我想查询字典的密钥,任何密钥,我想知道在调用之间是否存在性能差异(除了视觉和可读性): / p>
for key in dict:
my_func(dict[key])
break
和
my_func(dict.keys()[0])
这让我想到了上面的问题 - 在for
的{{1}}循环中,python做了什么,特别是在引擎盖下?
答案 0 :(得分:2)
迭代dict
不会调用dict.key()
。字典本身支持迭代。
>>> iter({'name': 'value'})
<dict_keyiterator object at 0x7f127da89688>
BTW,Python 3.x中的dict.keys
返回不支持索引的字典键视图。
>>> {'name': 'value'}.keys()
dict_keys(['name'])
>>> {'name': 'value'}.keys()[0]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'dict_keys' object does not support indexing
如果您想获取任何密钥,可以使用next
,iter
:
>>> next(iter({'name': 'value', 'name2': 'another value'}))
'name'
>>> next(iter({})) # <-- To handle empty case, pass default value
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
StopIteration
>>> next(iter({}), 'default value')
'default value'