如何使用Python在字典中按排序顺序显示字典?

时间:2019-05-02 19:08:13

标签: python python-2.7 sorting dictionary

我有一个包含字典数据的字典。我正在尝试输出按子词典中的值之一排序的词典。 (国家)。而且,难于对年龄进行次要排序吗?

有人可以解释如何做到这一点?

我当前的代码:

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

1 个答案:

答案 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

获得相似的结果。