【问题标题】:How to force dictionary elements to be written in order?如何强制按顺序编写字典元素?
【发布时间】:2017-09-18 11:47:54
【问题描述】:

我正在尝试使用 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 循环中严格确定了我希望如何写入我的值时,为什么会发生这种情况?

【问题讨论】:

标签: python excel dictionary


【解决方案1】:

我认为您意识到,当您遍历字典时,无法保证任何特定的顺序。您遇到的问题是您尝试强制订购的方式存在缺陷。

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

【讨论】:

    猜你喜欢
    • 2011-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-13
    • 1970-01-01
    • 2021-03-05
    • 2020-06-30
    相关资源
    最近更新 更多