基于python,dict字典类型按key排序/按value排序的解决方案
发布于 作者:苏南大叔 来源:程序如此灵动~
为了更好的理解词频统计,可能需要对词频统计的结果进行加工。其中,就有对字典类型数据进行排序的需求。本文,正是对这种字典排序需求,进行代码理论准备的。
苏南大叔的“程序如此灵动”技术博客,记录苏南大叔的代码经验总结。本文测试环境:win10
,python@3.11.0
,numpy@1.24.2
。因为关于具体的排序的标准,实际上没有统一的说法。所以,这里的方案仅仅算抛砖引玉。
按key排序
字典类型的key
,不一定是数字的。这段代码的目标就是安装key
排序,同时保持对应关系。
_dict = {2: "南", 1: "苏", 4: "叔", 3: "大"}
_dict1 = dict([(k, _dict[k]) for k in sorted(_dict.keys())]) # 推导式
_dict2 = dict(sorted(_dict.items(), key=lambda d: d[0])) # 拉姆达
print(_dict1, type(_dict1)) # {1: '苏', 2: '南', 3: '大', 4: '叔'} <class 'dict'>
print(_dict2, type(_dict2)) # {1: '苏', 2: '南', 3: '大', 4: '叔'} <class 'dict'>
按value排序
这里换了一个新的字典变量,主要为了更加好理解按value
排序后的结果。
_dict = {2: "a", 1: "d", 4: "c", 3: "b", 5: "e"}
_dict2 = dict(sorted(_dict.items(), key=lambda d: d[1]))
print(_dict2, type(_dict2)) # {2: 'a', 3: 'b', 4: 'c', 1: 'd', 5: 'e'} <class 'dict'>
按预设value排序
下面回归最开始的需要排序的变量,这个顺序是苏南大叔自定义的。毕竟中文排序这个事情,还是不太好说的。这里预设一个符合想法的顺序可能比较好一点。
_dict = {2: "南", 1: "苏", 4: "叔", 3: "大"}
_dict2 = dict(sorted(_dict.items(), key=lambda d: list("苏南大叔").index(d[1])))
print(_dict2, type(_dict2)) # {1: '苏', 2: '南', 3: '大', 4: '叔'} <class 'dict'>
相关文章
结语
苏南大叔的更多python
文章,请点击:


