具有列表键值对的 Python 2.7 字典被重新排序



我正在尝试使用键值对的字典来存储和访问基于适当键的列表。 以下是我正在使用的。

newDict = {'mod':[0,2], 'pro':[2,3], 'st':[6,10]}
newDict2 = {'a':[0,2], 'b':[2,3], 'c':[6,10]}

正在按特定顺序构建此字典,以便我可以使用for循环遍历它。 但是无论出于何种原因,当我打印或通过for循环时,键的顺序都会重新排序。

print "the newDict is: " + str(newDict)
print "the newDict2 is: " + str(newDict2)
for key in newDict:
    print "the key is: " + str(key)

其输出如下。

newDict is: {'pro': [2, 3], 'mod': [0, 2], 'st': [6, 10]}
newDict2 is: {'a': [0, 2], 'c': [6, 10], 'b': [2, 3]}
the key is: pro
the key is: mod
the key is: st

我更关心键的顺序而不是列表的值。 所以我不想按列表的值排序。 我一直在做研究,但不知道为什么它会改变顺序。 我尝试更改列表中的值以尝试弄清楚,但无法找到模式。 我认为当秩序不是一个问题时,就会使用字典。 也许字典不是解决这个问题的方法。 任何帮助将不胜感激。

正如你提到的,python字典不维护秩序。这意味着在创建或修改dict后打印或迭代时,不能保证以任何顺序取出键值对。但是,只要不插入或删除任何项目,此顺序,无论它是什么,都将保持不变。

dict中的列表(与键对应的值)不会更改;它们仍然与分配给它们的键匹配。但是,键值对的顺序已更改。

如果您希望键值对保持顺序,则可以使用 OrderedDict

from collections import OrderedDict
newDict = OrderedDict([('mod', [0,2]), ('pro',[2,3]), ('st',[6,10])])
newDict2 = OrderedDict([('a',[0,2]), ('b',[2,3]), ('c',[6,10])])

很抱歉我遇到了互联网问题

from collections import OrderedDict

所以这是一个特殊的容器,它是一个 OrderedDict,它按键插入的顺序排序,键将按顺序保持它们的顺序。

所以你有一些过程来创建密钥,

newDict = OrderedDict()
for some_iterator_value in some_iterator:
    key = some_iterator_value
    value = we_created_a_list
    newDict[key] = value

相关内容

  • 没有找到相关文章

最新更新