在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'}
我知道,元組順序不能改變,因爲它們是不可變的,但我是保證它將始終按順序迭代?
在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'}
我知道,元組順序不能改變,因爲它們是不可變的,但我是保證它將始終按順序迭代?
是的,元組被排序並且迭代遵循該順序。保證™。
可以生成你用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'}
現在我看到我可以使用枚舉(T,start)以一些偏移量開始我的索引。我正在從嵌入式設備讀取內存塊,我想將其映射到字典中,其中的鍵是嵌入式設備的內存地址。完善。謝謝。 – MrPat 2014-09-04 17:26:26
@gabroncancio:你的鏈接很好,但實際上並沒有*記錄迭代行爲*。出於這個原因,我沒有自己添加鏈接。 – 2014-09-04 21:13:39
是的,它保證將按照該順序迭代元組。 *字典*然而是無序的,所以你*不能*依賴它們的順序('key:value'映射將保證是你顯示它的方式)。如果您需要訂單保留字典,請使用['collections.OrderedDict'](https://docs.python.org/2/library/collections.html#collections.OrderedDict)。 – 2014-09-04 17:12:27