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

Python 如何强制按顺序编写字典元素?,python,excel,dictionary,Python,Excel,Dictionary,我正在尝试使用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

我正在尝试使用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}
for key, value in sorted(Pg.iteritems()):
    worksheet.write(row, col, value.x)
    row += 1
我进入Excel:

1
3
2

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

我想您已经意识到,当您迭代字典时,不保证有任何特定的顺序。你所面临的问题是,你试图强制订购的方式是有缺陷的

for key,value in Pg.iteritems():
    for t in range(1,4):
        if key==(0,t):
            # ...
它首先迭代每个
键、值对。然后,如果密钥与某个条件匹配,则在该文件中输出。如果您为
循环切换
的顺序,您将得到您想要的,但是这种方法根本没有效率

更简单地说,您可以像这样迭代排序字典:

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

答案在这里。此问题的可能重复项不是链接问题的重复项。为了更准确地反映这个问题的主旨,我修改了主题。(这很可能是关于Python字典以及如何排序的其他问题的重复,或者至少与之相关。这里的主要问题不是简单地编写Excel。)