2014-09-04 32 views
1

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

我知道,元組順序不能改變,因爲它們是不可變的,但我是保證它將始終按順序迭代?

+0

是的,它保證將按照該順序迭代元組。 *字典*然而是無序的,所以你*不能*依賴它們的順序('key:value'映射將保證是你顯示它的方式)。如果您需要訂單保留字典,請使用['collections.OrderedDict'](https://docs.python.org/2/library/collections.html#collections.OrderedDict)。 – 2014-09-04 17:12:27

回答

13

是的,元組被排序並且迭代遵循該順序。保證™。

可以生成你用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'} 
+0

現在我看到我可以使用枚舉(T,start)以一些偏移量開始我的索引。我正在從嵌入式設備讀取內存塊,我想將其映射到字典中,其中的鍵是嵌入式設備的內存地址。完善。謝謝。 – MrPat 2014-09-04 17:26:26

+0

@gabroncancio:你的鏈接很好,但實際上並沒有*記錄迭代行爲*。出於這個原因,我沒有自己添加鏈接。 – 2014-09-04 21:13:39

相關問題