Python字典的迭代

4 投票
3 回答
612 浏览
提问于 2025-04-16 01:56

我根据一些条件来填充一个Python字典。

我想问的是:

我们能否按照填充的顺序来获取这个字典呢?

          questions_dict={}  

              data = str(header_arr[opt]) + str(row)
              questions_dict.update({data : xl_data})
              valid_xl_format = 7
              if (type.lower() == "ma" or type.lower() == "mc"):
                      data = str(header_arr[opt]) + str(row)
                      questions_dict.update({data : xl_data})
                      valid_xl_format = 7

填充完字典后,如果我去遍历它,发现它的顺序和填充时的顺序不一样。

     for k in questions_dict:
          logging.debug("%s:%s" %(k,questions_dict[k]))

3 个回答

0

字典之所以高效,是因为它的键会被转换成一种叫做哈希的对象。字典内部会把这些哈希对应的值存储起来。所以,当你遍历字典里的内容时,其实是根据哈希的顺序在进行,而不是根据原来的键的顺序。

2

字典并不是有顺序的集合。你需要其他的数据来记录它们的顺序。

8

为了记录字典中元素添加的顺序,你需要使用一种不同于普通字典(dict)的类型,这种类型通常被称为“有序字典”。你可以使用第三方的odict模块,或者如果你能升级到Python 2.7的话,可以使用collections.OrderedDict

撰写回答