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

时间:2017-04-21 12:56:24

标签: 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,2):2,(0,3):3}

我进入Excel:

1
3
2

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

1 个答案:

答案 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