Python:遍历元组时顺序是否保留?

6 投票
2 回答
3931 浏览
提问于 2025-04-19 20:55

在Python中,如果我运行以下代码:

T=('A','B','C','D')
D={}
i=0
for item in T:
    D[i]=item
    i=i+1

我能确定D会被组织成:

D = {0:'A', 1:'B', 2:'C', 3:'D'}

我知道元组的顺序是不能改变的,因为它们是不可变的,但我能保证它会一直按这个顺序进行迭代吗?

2 个回答

0

因为元组是一种序列(这是因为它属于标准类型层次结构),并且是有顺序的(根据实现方式),所以它有一个__iter__()的方法,这个方法是为了遵循迭代器协议。这意味着每次获取tuple中的下一个值时,都是按照相同的顺序来获取的,因为它们指向的是同一个对象。

22

没错,元组是有顺序的,遍历的时候会按照这个顺序进行。这个是有保证的™。

你可以用一个表达式生成你的 D,使用 enumerate() 函数来得到索引:

D = dict(enumerate(T))

这是因为 enumerate() 会生成 (索引, 值) 的元组,而 dict() 函数可以接受一系列 (键, 值) 的元组来创建字典:

>>> T = ('A', 'B', 'C', 'D')
>>> dict(enumerate(T))
{0: 'A', 1: 'B', 2: 'C', 3: 'D'}

撰写回答