常用处理 - dict 按 key 排序

  • 作者:KK

  • 发表日期:2019.10.08


先基于应用场景来说

与其它服务端做接口对接时,一般都需要参数签名,往往需要将一个 dict 的参数按 key 的字母排序再进行 hash 签名计算,示例代码如下:

import urllib.parse
params = {
	'name': 'Jay',
	'age': 19,
	'is_disabled': 0,
}
paramsStr = urllib.parse.urlencode(params)
keySortedParamsStr = sorted(paramsStr.split('&'))

print(keySortedParamsStr)  

# 输出 age=19&is_disabled=0&name=Jay

正式讲讲dict的排序

其实这里才是针对本文章标题的正式内容

def sortByKey(dictVar):
	sortedTuple = sorted(dictVar.items(), key = lambda x:x[0])
	sortedDict = {}
	for tupleItem in sortedTuple:
		sortedDict[tupleItem[0]] = tupleItem[1]
	return sortedDict
	
params = {
	'name': 'Jay',
	'age': 19,
	'is_disabled': 0,
}
print( sortByKey(params) )

输出:{'age': 19, 'is_disabled': 0, 'name': 'Jay'}