我正在尝试使用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 :(得分: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