识别字典中字典中的最小日期

时间:2016-08-26 15:42:50

标签: python-3.x

我的数据按字典排列在词典中,如下所示:

dict = {subdict1:{}, subdict2:{},...}

,其中

subdict1 = { subdict_a: {"date":A, "smallest_date":False}, subdict_b : {"date":B, "smallest_date": False},...}

我想循环遍历子句a,b,c ...并确定每个子字典中哪个日期A,B,C ...最小,并将'smallest_date'的值更改为真正。

如何解决这个问题?我尝试过类似的东西,但还不能完成它:

for subdict_number, values1 in dict.items():
    smallest_date = None
    for subdict_alphabet, values2 in values1.items():
        if smallest_date == None or smallest_date > values2["date"]
            smallest_date = values2["date"]
            smallest_subdict = subdict_alphabet

然后一些魔法在子句中的循环关闭集

dict[subdict][smallest_subdict]["date"] = smallest_date

然后继续下一个细分来做同样的事情。

我无法完成这件事。你能帮我吗?可以使用完全不同的方法,但作为一个初学者,我想不出一个。

1 个答案:

答案 0 :(得分:0)

我试图保留命名说明。

给出输入字典:

main_dict = { 'subdict1' : {'subdict_1a': {"date":1, "smallest_date":False},
                        'subdict_1b' : {"date":2, "smallest_date": False}},
          'subdict2': {'subdict_2a': {"date":3, "smallest_date":False},
                        'subdict_2b' : {"date":4, "smallest_date": False}}}

遍历subdicts并声明变量:

for subdict in main_dict:
    min_date = 10000000
    min_date_subsubdict_name = None

遍历子列并确定最小值

    for subsubdict in main_dict[subdict]:
        if main_dict[subdict][subsubdict]['date'] < min_date:
             min_date = main_dict[subdict][subsubdict]['date']
             min_date_subsubdict_name = subsubdict

在第一个循环中,但在第二个循环之外:

    main_dict[subdict][min_date_subsubdict_name]['smallest_date'] = True

这应该返回输出maindict:

{'subdict2': {'subdict_2a': {'date': 3, 'smallest_date': True}, 'subdict_2b': {'date': 4, 'smallest_date': False}}, 'subdict1': {'subdict_1a': {'date': 1, 'smallest_date': True}, 'subdict_1b': {'date': 2, 'smallest_date': False}}}