`for`循环如何专门用于字典

时间:2016-03-23 09:49:21

标签: python python-3.x for-loop dictionary

我想知道for循环究竟是如何访问字典中的键的? 它会调用dict.keys()并遍历该列表吗?

我问的原因是我想查询字典的密钥,任何密钥,我想知道在调用之间是否存在性能差异(除了视觉和可读性): / p>

for key in dict:
    my_func(dict[key])
    break

my_func(dict.keys()[0]) 

这让我想到了上面的问题 - 在for的{​​{1}}循环中,python做了什么,特别是在引擎盖下?

1 个答案:

答案 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

如果您想获取任何密钥,可以使用nextiter

>>> 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'