對字典內所有內容進行排升序排序,包括,子數組,子字典
需要注意:
1.字典因為是在一定程序上無序的,所以這里采用了內置包,來變成有序字典
from collections import OrderedDict
實現代碼:
代碼中,清除了值為[]的列表,與值為None的項
def sortDict(pyload): item = 'p.items()'
if type(pyload).__name__=='list': p = sorted(pyload) item = 'enumerate(p)'
if type(pyload).__name__ == 'dict': p=OrderedDict(sorted(pyload.items(),key=lambda a:a[0])) for k,v in eval(item): if type(v).__name__=='list': if not v or (v is None): p.pop(k) else: p[k]=list(sortDict(sorted(v))) elif type(v).__name__=='dict': if not v or (v is None): p.pop(k) else: p[k] =dict(sortDict(v)) return p else: if v is None: p.pop(k) return p listk = {'d':['a',1,4,3,8,2,'b',[4,3,2,1,[9,8,7,6]]],'b':1} print sortDict(listk)
運行結果:
D:\Python27\python.exe D:/untitled4/tmp6.py OrderedDict([('b', 1), ('d', [1, 2, 3, 4, 8, [1, 2, 3, 4, [6, 7, 8, 9]], 'a', 'b'])]) Process finished with exit code 0
注意:看着輸出里邊又是列表,又是元組的有點暈。其實這個你不用管的。直接當字典使用就好。
如,我要取key為b的值
OrderedDict('b')