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()函数正在做什么以及它实际上如何获取值感兴趣,它只是从键中获取它吗?
答案 0 :(得分:3)
在Python解释器内部的C实现中,字典被实现为哈希表。由于散列冲突,两个键可能映射到散列表中的相同条目,因此每个项必须具有其对应的键和值(或者更确切地说,指向这些的指针)存储在散列表中的每个旁边另外,这样可以比较密钥以验证是否找到了正确的项目。因此,迭代项目就像单独迭代键或值一样简单。这只是回归的问题。 (这也解释了为什么迭代键和值分别以相同的顺序返回它们;在两种情况下都会迭代完全相同的数据结构。)
这些细节仅适用于标准的Python解释器CPython,但大多数哈希表的实现都是类似的。