Python 如何设法循环遍历字典中的值?

How does Python manage to loop through values in a dictionary?

我想知道 Python 如何循环遍历字典中的值。我知道如何在代码中做到这一点,我读过的所有答案都只是解释了如何去做。 我想了解 python 如何找到值,因为我认为字典值与键相关联。字典项目是否也有索引值或其他东西? 感谢您提前回答或参考相关来源:)

我用 Google 搜索、Whosebug 和阅读。

编辑:我对 Python3.7 如何做到这一点很感兴趣

根据源代码 (dict_items(PyDictObject *mp)) 分配了一个包含 n 个(字典中 key/value 对的大小)元组的列表,并且对于每个 non-null 值项 (第 2278 行:if (value != NULL)),它被设置在元组列表的相应索引处。 python 对象本身基本上是一块内存,它知道每个对象的大小 (offset)、值的起始位置 (value_ptr) 以及键的位置 (ep).因此,当您获得 keys/values (for k,v in object) 时,它基本上会遍历对象已分配内存的已用部分。

顺便说一下,了解 PyList_SET_ITEM 只是一个宏,可以通过其所需的索引设置数组中的值:#define PyList_SET_ITEM(op, i, v) (((PyListObject *)(op))->ob_item\[i\] = (v))。由于数组只是按顺序存储在内存中的值,因此索引运算符知道将值放在 start + (sizeOf(object)*index).

的内存位置

免责声明:这是我第一次尝试阅读 python 源代码,因此我的解释可能有点偏离或过于简单化。