努力设计一个基于前一个字典的字典

时间:2018-01-10 09:10:54

标签: python dictionary

我有以下dicti_1

{'2017-09-01': ['PRUEBAPRUEBA', 'PRUEBA123123'], 
 '2017-10-03': ['PRUEBAPRUEBA', 'PRUEBA123123'], 
 '2017-11-08': ['PRUEBAPRUEBA', 'PRUEBA123123'], 
 '2017-12-03': ['PRUEBA123123']}

我期待检查最新密钥中出现的值(因为它是一个日期):

为了检查与最新密钥对应的最新值,我所做的是:

编辑:来自@COLDSPEED输入我对字典进行了排序,我使用了@Devin Jeanpierre 在以下链接中的答案是使用运算符模块对字典进行排序:How do I sort a dictionary by value?

sorted_dict = sorted(dicti_1.items(), key=operator.itemgetter(0))

latest_key=list(sorted_dict.keys())[-1]

return sorted_dict[latest_key]

在此之后,我期待创建一个包含最新日期和显示值的字典:

return {latest_key:sorted_dict[latest_key]}

输出:

{'2017-12-03': ['PRUEBA123123']}

但是,在我的特定情况下,2017-12-03对应PRUEBA123123有一个最新值,而最新日期为PRUEBAPRUEBA的值为2017-11-08。 因此,我想要的输出将是这样的:

new_dicti=

{'2017-12-03': ['PRUEBA123123'], '2017-11-08': ['PRUEBAPRUEBA']}

我面临的问题是如何使用每个不同值的最新日期设计new_dict

非常感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

请检查一下是否有效 -

import collections
dicti_1 = {'2017-09-01': ['PRUEBAPRUEBA', 'PRUEBA123123'],  
 '2017-11-08': ['PRUEBAPRUEBA', 'PRUEBA123123'], 
 '2017-10-03': ['PRUEBAPRUEBA', 'PRUEBA123123'],
 '2017-12-03': ['PRUEBA123123']}

dicti_2 = collections.OrderedDict(sorted(dicti_1.items()))
print(dicti_2)
my_dict2 = { z:x for x,y in dicti_2.items() for z in y }

print(my_dict2)
output = {}
for key, value in my_dict2.items():
    if value in output:
        output[value].append(key)
    else:
        output[value] = [key]
print(output)

答案 1 :(得分:0)

我的方法是首先根据键对dict进行排序,然后将dict值中的唯一项存储到一个全新的词典中。

for date in sorted(d.keys(), reverse=True):
    for l in d[date]:
        if l not in new_dict:
            new_dict[l] = date

它将产生如下的输出

{'PRUEBA123123': '2017-12-03', 'PRUEBAPRUEBA': '2017-11-08'}