Для Python 3.6 и> вы можете сделать :
dDict = {}
dDict.update( { "Bob Barker": {"age":50, "city":"Los Angeles", "state":"CA" } } )
dDict.update( { "Steve Norton": {"age":53, "city":"Vulcan", "state":"CA" } } )
dDict.update( { "John Doe": {"age":27, "city":"Salem", "state":"OR" } } )
dDict.update( { "Mary Smith": {"age":24, "city":"Detroit", "state":"MI" } } )
print(dDict)
dDict = (dict(sorted(dDict.items(), key=lambda x: x[1]["state"])))
print("Name Age City State")
for d in dDict:
print ("{:12} {:3} {:11} {:2}".format(d, dDict[d]["age"], dDict[d]["city"], dDict[d]["state"]) )
Отпечатки:
Bob Barker 50 Los Angeles CA
Steve Norton 53 Vulcan CA
Mary Smith 24 Detroit MI
John Doe 27 Salem OR
Для меня.
В Python 3.6и выше, вы можете отсортировать словарь следующим образом:
dDict = (dict(sorted(dDict.items(), key=lambda x: x[1]["state"])))
Здесь я ввел lambda x: x[1]["state"]
в ключе, как вы хотели отсортировать по state
.Вы можете изменить это, если хотите отсортировать другим способом.
Для python 2.7 вы можете сделать :
from collections import OrderedDict
dDict = OrderedDict(sorted(dDict.items(), key=lambda x: x[1]["state"]))
, чтобы получить аналогичный результат.