如何使用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。谢谢。您的解决方案运行良好,我想我了解它的工作原理。可能重复