我有一个字典,键代表条目,值代表条目的计数。例如在下面的字典:
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)
将其转换为字典并打印出来。