我有一个很大的嵌套字典,需要对其中的数据进行排序和提取,但是我不确定如何解决该问题。这是dict
形式:
mydict = {Person 1 : [{'2017-06-02': {'Country A': {'City 1': {'Population': '0', 'Temp': '10'}}}, '2016-06-02': {'Country B': {'City 2' :{'Population':'1'}}}]
我可以使用哪种方法按日期对列表进行排序并在之后进行遍历?
注意:实际的字典中有很多条目
答案 0 :(得分:0)
不确定这是否是您要搜索的
mydict = {'Person 1' : [{'2017-06-02': {'Country A': {'City 1': {'Population': '0', 'Temp': '10'}}}, '2015-06-02': {'Country A': {'City 1': {'Population': '0', 'Temp': '10'}}}}]}
od = collections.OrderedDict(sorted(mydict["Person 1"][0].items()))
答案 1 :(得分:0)
我假设您只想对一个人的日期进行排序。我将使用sorted
函数和指向字典键的key
参数来返回列表。我很快将您的“ Person 1”键更改为字符串进行测试,只是将嵌套字典更改为字符串,在这里并不重要。
mydict = {'Person 1' : [{'2018-11-02': "more_dicts"},
{'2017-06-02': "more_dicts_here"}]
}
def get_key(input_dict):
return input_dict.keys() # Returns key of dictionary
# Printing the result
print sorted(mydict['Person 1'], key=get_key)
# Adjusting the value of Person 1 if necessary
mydict['Person 1'] = sorted(mydict['Person 1'], key=get_key)
如果要为每个人执行此操作,则可以在上方使用此方法,并仅循环浏览字典的每个键。您也可以使用lambda
函数代替此处定义的常规函数。
编辑:
这是一个示例,如果您想遍历每个人并使用lambda
函数(而不是定义类似get_key
的函数)
mydict = {'Person 1' : [{'2018-11-02': "more_dicts"},
{'2017-06-02': "more_dicts_here"}],
'Person 2' : [{'2019-11-02': "more_dicts"},
{'2017-06-02': "more_dicts_here"}],
'Person 3' : [{'2018-11-02': "more_dicts"},
{'2020-06-02': "more_dicts_here"}]
}
for person in mydict.keys():
mydict[person] = sorted(mydict[person], key=lambda x: x.keys())
print mydict