Python中的有序字典

Python中的有序字典,python,dictionary,Python,Dictionary,我有一本Python字典,如下所示: dict={'a':1,'q':1,'l':2,'m':1,'u':1,'i':1} 有没有什么办法可以让我用这种方式来表达这本词典的顺序。我已经阅读了几个论坛,其中大多数建议使用OrderedDict()。但正如这里所解释的: OrderedDict(dict)在以该形式编写词典时不会保持顺序。我无法以特定的方式手动创建字典(例如元组列表),因为它是由其他地方的代码随机生成的。 非常感谢你的帮助 当您编写dict={'a':1,'q':1,'l':2,'

我有一本Python字典,如下所示: dict={'a':1,'q':1,'l':2,'m':1,'u':1,'i':1}

有没有什么办法可以让我用这种方式来表达这本词典的顺序。我已经阅读了几个论坛,其中大多数建议使用OrderedDict()。但正如这里所解释的:

OrderedDict(dict)在以该形式编写词典时不会保持顺序。我无法以特定的方式手动创建字典(例如元组列表),因为它是由其他地方的代码随机生成的。
非常感谢你的帮助

当您编写
dict={'a':1,'q':1,'l':2,'m':1,'u':1,'i':1}
时,您已经失去了元素的顺序。保存它的方法:

a。首先从您的数据创建
OrderedDict

b。将您的
dict
转换为元组列表并按您想要的方式排序,然后从中创建
orderedict

总而言之,从你的问题来看,不清楚你想保留什么。如果它是“随机”生成的,那么谁在乎呢,如果它背后有某种逻辑,那么就用这个逻辑来重新创建该顺序,并使用它创建
orderedict
。如果在幕后发生了什么事情,从一些输入数据创建了这个dict,那么,唉,您看到它的顺序与创建它的顺序不同


PS和不要调用您的dict
dict
如果您要订购的词典是在您的控制之外创建的,您可以使用以下方法获取其
键:值
对作为元组列表:

pairs = my_dict.items()
然后,您可以按自己喜欢的方式对该列表进行排序。完成此操作后,可以将已排序的对列表传递给
orderedict
构造函数

from collections import OrderedDict
# sort in some way (for example, reverse the key order)
pairs = reversed(my_dict.items())
ordered = OrderedDict(pairs)
只需将2用于:

dict = {'a':4, 'q':1, 'l':2, 'm':4, 'p':1}

i = max(dict.values())+1
for el in range (i):
    for letter in dict:
        if el==dict[letter]:
            print(letter,dict[letter])

如果你的字典是“由其他地方的代码随机生成的”,那么你想保持什么样的顺序呢?您在“其他地方的代码”中丢失了任何排序概念。换句话说,“保持此字典的顺序”毫无意义-字典没有顺序。不要用类型名称命名变量,也就是说,不要称它为dict。