我有一个包含字典数据的字典。我正在尝试输出按子词典中的值之一排序的词典。 (国家)。而且,难于对年龄进行次要排序吗?
有人可以解释如何做到这一点?
我当前的代码:
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("Name Age City State")
for d in dDict:
print ("{:12} {:3} {:11} {:2}".format(d, dDict[d]["age"], dDict[d]["city"], dDict[d]["state"]) )
输出:
Name Age City State
Steve Norton 53 Vulcan CA
Mary Smith 24 Detroit MI
Bob Barker 50 Los Angeles CA
John Doe 27 Salem OR
我想要什么:
Name Age City State
Bob Barker 50 Los Angeles CA
Steve Norton 53 Vulcan CA
Mary Smith 24 Detroit MI
John Doe 27 Salem OR
答案 0 :(得分:2)
对于python 3.6和>您可以:
033
打印:
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"]) )
对我来说。
在python 3.6及更高版本中,您可以像这样对字典进行排序:
Bob Barker 50 Los Angeles CA
Steve Norton 53 Vulcan CA
Mary Smith 24 Detroit MI
John Doe 27 Salem OR
在这里,我在键中输入了dDict = (dict(sorted(dDict.items(), key=lambda x: x[1]["state"])))
,因为您想按lambda x: x[1]["state"]
进行排序。如果您想以其他方式排序,则可以更改它。
对于python 2.7,您可以:
state
获得相似的结果。