2017-04-21 51 views
2

我正在嘗試使用XlsxWriter從Python寫入Excel工作簿。 我有一個字典叫Pg,它的鍵是元組。如何強制字典元素按順序寫入?

for key,value in Pg.iteritems(): 
    for t in range(1,4): 
     if key==(0,t): 
     worksheet.write(row,col,value.x) 
     row += 1 

我想在一列中寫入鍵值(0,t),但這些值不以正常順序出現。例如,如果我的字典裏是這樣的:

Pg={(0,1):1,(0,2):2,(0,3):3} 

我得到在Excel中:

1 
3 
2 

爲什麼當我在第二for環路我多麼希望我的價值觀是有嚴格確定這種情況發生書面?

+0

答案:

更簡單地說,你可以遍歷排序的字典是這樣的。 [http://stackoverflow.com/questions/13437727/python-write-to-excel-spreadsheet](http://stackoverflow.com/questions/13437727/python-write-to-excel-spreadsheet) – voidpro

+0

可能的重複[Python - 寫入Excel電子表格](http://stackoverflow.com/questions/13437727/python-write-to-excel-spreadsheet) – user2263572

+0

這個問題不是鏈接問題的重複。我修改了主題,以更準確地反映這個問題的主旨。 (這很可能是關於Python其他有關Python詞典以及如何排序的其他問題的重複或至少與其相關的問題。簡單地寫入Excel並不是主要問題。) –

回答

3

我想你會意識到,當你遍歷字典時,你不能保證任何特定的順序。你遇到的問題是你試圖強制排序的方式是有缺陷的。

for key,value in Pg.iteritems(): 
    for t in range(1,4): 
     if key==(0,t): 
      # ... 

這樣做是對每個key, value對重複首先。然後在這裏你輸出,如果密鑰匹配一定的條件。如果切換for循環的順序,您將得到您想要的內容,但此方法效率不高。這裏

for key, value in sorted(Pg.iteritems()): 
    worksheet.write(row, col, value.x) 
    row += 1 
+0

謝謝,這解決了我的問題 – user7901517

相關問題