在Python中遍历字典时,为什么必须调用.items()?

发布于 2021-01-29 18:18:48

为什么必须调用items()以迭代字典中的键,值对?即。

dic = {'one': '1', 'two': '2'}
for k, v in dic.items():
    print(k, v)

为什么不遍历字典的默认行为

for k, v in dic:
    print(k, v)
关注者
0
被浏览
211
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    对于每个python容器C,期望是

    for item in C:
        assert item in C
    

    会顺利通过-如果一种感觉(循环子句)与另一种感觉(存在检查)完全不同, 会不会感到惊讶in?我一定会的!它自然适用于列表,集合,元组,…

    因此,当C是一个字典时,如果infor循环生成键/值元组,则根据最小惊讶的原理,in还必须在容纳检查中采用这样的元组作为其左侧操作数。

    那会有用吗?好看不中用的确,基本上做if (key, value) in C的代名词if C.get(key) == value-这是一张支票,我相信我可能已经执行,或要执行,100倍以上的很少比if k in C实际 手段 ,检查钥匙的存在 唯一
    ,完全无视值。

    另一方面,只在键上循环很常见,例如:

    for k in thedict:
        thedict[k] += 1
    

    拥有价值也无济于事:

    for k, v in thedict.items():
        thedict[k] = v + 1
    

    实际上有点不太清晰和简洁。(请注意,这items是用于获取键/值对的“正确”方法的原始拼写:不幸的是,这是在此类访问器返回整个列表的时代,因此,为了支持“公正迭代”,必须引入替代拼写,并且iteritems
    在-Python 3中,与以前的Python版本的向后兼容性约束被大大削弱,并且items再次出现。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看