如何根据键排序字典?



我有一个字典,键代表条目,值代表条目的计数。例如在下面的字典:

dict= {'11': 4, '0': 2, '65': 1, '88': 1, '12': 1, '13': 1}
'11' occurred 4 times
'0' occurred 2 times
'65' occurred 1 time

如何排序字典dict.keys()降序或升序?

理想输出将是

dict={'0':2,'11':4,'12':1,'13':1,'65':1,'88':1} 

dict={'88':1,'65':1,'13':1,'12':1,'11':4,'0':2}

如有任何帮助,不胜感激

score = {'eng': 33, 'sci': 85, 'math': 60}

你可以这样做…

score_sorted = sorted(score.items(), key=lambda x:x[0])

如果你想按val排序,那么score_sorted = sorted(score.items(), key=lambda x:x[1])。您还可以添加reverse=True来更改顺序。

与以前的文章相反,字典不再是无序的,并且从CPython 3.6(非正式的,作为C实现细节)和Python 3.7(正式的)开始可以排序。

要按键排序,请使用字典推导式按所需顺序构建新字典。如果您希望按字符串排序顺序排序,请使用以下命令,但请注意,'2'作为字符串出现在'11'之后:

>>> d = {'11': 4, '2': 2, '65': 1, '88': 1, '12': 1, '13': 1}
>>> {k:d[k] for k in sorted(d)}
{'11': 4, '12': 1, '13': 1, '2': 2, '65': 1, '88': 1}

按整数值排序,传递一个将字符串转换为整数值的key函数:

>>> {k:d[k] for k in sorted(d,key=lambda x: int(x))}
{'2': 2, '11': 4, '12': 1, '13': 1, '65': 1, '88': 1}

或者反过来,你可以使用reverse=True或者直接取反整数:

>>> {k:d[k] for k in sorted(d,key=lambda x: -int(x))}
{'88': 1, '65': 1, '13': 1, '12': 1, '11': 4, '2': 2}

对于旧版本的Python,使用list(d.items())将字典转换为列表,并使用类似的排序。

myDict= {'11': 4, '0': 2, '65': 1, '88': 1, '12': 1, '13': 1}
sortDict = {}
for i in sorted(myDict.keys()) :  
sortDict[i] = myDict[i]
print(sortDict) 
dict= {'11': 4, '0': 2, '65': 1, '88': 1, '12': 1, '13': 1}

你可以像这样尝试字典理解

sorted_dict={k:dict[k] for k in sorted(dict)}
print(sorted_dict)

注意:不要使用dict作为变量名,因为它已经是一个内置函数。

your_dict = {'11': 4, '0': 2, '65': 1, '88': 1, '12': 1, '13': 1}比较好。

您可以使用sample_list = list(your_dict.items())将给定的字典转换为列表。

在Python字典中,items()方法用于返回包含所有带值的字典键的列表。

使用sample_list.sort()对列表进行排序

要反转列表,使用reverse = True

sample_list = list(your_dict.items())
sample_list.sort(reverse = True)

然后使用dict = dict(sample_list)将其转换为字典并打印出来。

最新更新