【问题标题】:Python: Is order preserved when iterating a tuple?Python:迭代元组时是否保留顺序?
【发布时间】:2014-09-04 16:52:38
【问题描述】:

在 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'}

我知道元组的顺序不能更改,因为它们是不可变的,但我是否保证它也将始终按顺序迭代?

【问题讨论】:

  • 是的,保证元组将按该顺序迭代。但是,字典 是无序的,因此您不能 依赖它们的顺序(key:value 映射将保证是您显示它的方式)。如果您需要保留顺序的字典,请使用 collections.OrderedDict。

标签: python loops tuples


【解决方案1】:

是的,元组是有序的,迭代遵循该顺序。保证™。

您可以使用enumerate() 在一个表达式中生成您的D 以生成索引:

D = dict(enumerate(T))

这是因为enumerate() 产生(index, value) 元组,而dict() 接受(key, value) 元组序列来产生字典:

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

【讨论】:

  • 现在我看到我可以使用 enumerate(T,start) 以一些偏移量开始我的索引。我正在从嵌入式设备读取内存块,我想将其映射到字典中,其键是嵌入式设备的内存地址。完美的。谢谢。
  • @gabroncancio:您的链接很好,但实际上并没有记录迭代行为。出于这个原因,我自己没有添加链接。
猜你喜欢
  • 2021-03-04
  • 1970-01-01
  • 1970-01-01
  • 2015-09-18
  • 2014-12-14
  • 1970-01-01
  • 2011-04-12
  • 2010-11-29
  • 1970-01-01
相关资源
最近更新 更多