我在Python中有一个字典,如下所示: dict = {'a':1,'q':1,'l':2,'m':1,'你':1,'我':1}
有什么方法可以保持这种字典的顺序以这种方式表达。我已经阅读了几个论坛,其中大多数建议使用OrderedDict()。但正如这里所解释的那样:
Python OrderedDict not keeping element order
OrderedDict(dict)在以该形式编写字典时不会保留顺序。我无法以特定方式手动创建字典(例如元组列表),因为它是由其他地方的代码随机生成的。 非常感谢你的帮助!!
答案 0 :(得分:3)
你写dict = {'a':1, 'q':1, 'l':2, 'm':1, 'u':1, 'i':1}
的那一刻,你已经失去了元素的顺序。保持它的方法:
一个。首先从您的数据中创建OrderedDict
。
湾将您的dict
转换为元组列表并按照您想要的方式排序,然后从中创建OrderedDict
。
总而言之,根据您的问题,您不清楚自己想要保留什么。如果它是“随机”生成然后谁在乎,如果它背后有一些逻辑,那么使用这个逻辑重新创建该命令并使用它创建OrderedDict
。如果在幕后发生了某些事情,从某些输入数据创建了这个字典,那么,唉,你看到它的顺序不是它的创建顺序。
PS并且不要打电话给你的词典dict
。
答案 1 :(得分:1)
如果您要订购的词典是在您的控件之外创建的,您可以使用以下内容将其key:value
对作为元组列表:
pairs = my_dict.items()
然后,您可以按照自己喜欢的方式对此列表进行排序。完成后,您可以将有序的对列表传递给OrderedDict
构造函数
from collections import OrderedDict
# sort in some way (for example, reverse the key order)
pairs = reversed(my_dict.items())
ordered = OrderedDict(pairs)
答案 2 :(得分:0)
只需使用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])