python的dictionary.items()函数如何在引擎盖下工作

时间:2015-05-19 00:01:05

标签: python

d = {'a' : 1, 'b' : 2, 'c' : 3}

for letter,number in d.items():
    print(letter, number)

这与......相同吗?

for letter in d:
    print(letter)
    print(d[letter])

我知道输出是一样的,但是我对items()函数正在做什么以及它实际上如何获取值感兴趣,它只是从键中获取它吗?

1 个答案:

答案 0 :(得分:3)

在Python解释器内部的C实现中,字典被实现为哈希表。由于散列冲突,两个键可能映射到散列表中的相同条目,因此每个项必须具有其对应的键和值(或者更确切地说,指向这些的指针)存储在散列表中的每个旁边另外,这样可以比较密钥以验证是否找到了正确的项目。因此,迭代项目就像单独迭代键或值一样简单。这只是回归的问题。 (这也解释了为什么迭代键和值分别以相同的顺序返回它们;在两种情况下都会迭代完全相同的数据结构。)

这些细节仅适用于标准的Python解释器CPython,但大多数哈希表的实现都是类似的。