Python:遍历元组时顺序是否保留?
在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'}