如何强制字典元素按顺序写入?

我正在尝试使用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 

为什么会发生这种情况,当我在第二个循环中严格确定了我希望如何写入我的值?

我想你会意识到,当你迭代一个字典时,你不能保证任何特定的顺序。 你遇到的问题是,你试图强制sorting的方式是有缺陷的。

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

它所做的是先迭代每个key, value对。 然后在这里你输出,如果密钥匹配一定的条件。 如果你改变了for循环的顺序,你会得到你想要的,但是这个方法效率不高。

更简单地说,你可以像这样迭代已sorting的字典:

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