Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Python按排序顺序显示字典中的字典?_Python_Python 2.7_Sorting_Dictionary - Fatal编程技术网

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

如何使用Python按排序顺序显示字典中的字典?,python,python-2.7,sorting,dictionary,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":"

我有一本包含字典数据的字典。我试图输出按子字典中的一个值排序的字典。(国家)。此外,对年龄进行二次排序是否困难

有人能解释一下这是怎么做到的吗

我当前的代码:

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

对于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"]) )
from collections import OrderedDict
dDict = OrderedDict(sorted(dDict.items(), key=lambda x: x[1]["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”]
,因为您希望按
状态进行排序。如果要以其他方式排序,可以更改此选项

对于python 2.7,您可以执行以下操作:

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"]) )
from collections import OrderedDict
dDict = OrderedDict(sorted(dDict.items(), key=lambda x: x[1]["state"]))

为了得到类似的结果。

不幸的是,我现在正在使用Python 2.7。谢谢。您的解决方案运行良好,我想我了解它的工作原理。可能重复