我想,而不是OrderedDict,你將與一個defaultdict更好:
from collections import defaultdict
a = defaultdict(dict)
a["01/03/2001"]["zz"]=3
a["01/01/2001"]["un"]=1
a["01/02/2001"]["aa"]=2
a["01/01/2001"]["nn"]=1
a["01/02/2001"]["bb"]=2
a["01/03/2001"]["rr"]=3
# a is now a dict of dicts, each key is a date and each value is a dict of all
# subkey-values
# print out in date order
for k,v in sorted(a.items()):
# for each subdict, print key=value in sorted key order
print k, ' '.join("%s=%s" % (kk,vv) for kk,vv in sorted(v.items()))
打印:
01/01/2001 nn=1 un=1
01/02/2001 aa=2 bb=2
01/03/2001 rr=3 zz=3
編輯:
啊!我的壞,你想插入順序所示的K = V值,所以你需要OrderedDict的的defaultdict:
from collections import defaultdict, OrderedDict
a = defaultdict(OrderedDict)
a["01/01/2001"]["un"]=1
a["01/01/2001"]["nn"]=1
a["01/02/2001"]["aa"]=2
a["01/02/2001"]["bb"]=2
a["01/03/2001"]["zz"]=3
a["01/03/2001"]["rr"]=3
# print out in date order
for k,v in sorted(a.items()):
# for each subdict, print key=value in as-inserted key order, so no sort requred
print k, ' '.join("%s=%s" % (kk,vv) for kk,vv in v.items())
打印:
01/01/2001 un=1 nn=1
01/02/2001 aa=2 bb=2
01/03/2001 zz=3 rr=3
OrderedDict不等於「排序字典」。它意味着「保存項目插入字典的順序」,所以只有按照排序順序插入時纔會對它們進行排序。爲了*總是*按排序的鍵順序獲取字典,使用'鍵爲排序的(dictvar.iteritems()):中的鍵',並且不需要OrderedDict能夠執行此操作的開銷。 – PaulMcG
感謝您的建議。那麼,我該如何根據日期對上面的字典詞典進行排序,並以上述格式呈現它們?我對python很陌生,我很困惑 – user2773013