我无法弄清楚如何更新嵌套字典中的值,该值会被覆盖。
我有一个列表date_list = ['2018AUG15', '2017APR22', '2017MAR05', '2016FEB10', '2016FEB09']
我正在制作一个嵌套的词典,到目前为止我已经
了import collections
date_list = ['2018AUG15', '2017APR22', '2017MAR05', '2016FEB10', '2016FEB09']
month_ditc = collections.defaultdict(dict)
for x in date_list:
year = x[:4]
month = x[4:-2]
day = x[7:]
month_ditc[year][month]= day
print month_ditc
产生
defaultdict(<type 'dict'>, {'2017': {'APR': '22', 'MAR': '05'}, '2016': {'FEB': '09'}, '2018': {'AUG': '15'}})
这接近我想要的。当我循环播放时,年份和月份正在更新,但是日期不是。
我尝试了以下但仍然没有 -
try:
month_ditc[year][month] = day
except KeyError:
month_ditc[year] = {month:day}
我希望结果是
defaultdict(<type 'dict'>, {'2017': {'APR': '22', 'MAR': '05'}, '2016': {'FEB': '09','10'}, '2018': {'AUG': '15'}})
答案 0 :(得分:4)
您的预期输出不是有效字典,我想您需要一个列表,如果密钥不在dict中,您可以尝试使用setdefault()
方法设置默认值。
如果键在词典中,则返回其值。如果没有,请插入密钥 默认值和返回默认值。默认默认为无。
import collections
date_list = ['2018AUG15', '2017APR22', '2017MAR05', '2016FEB10', '2016FEB09']
month_ditc = collections.defaultdict(dict)
for x in date_list:
year = x[:4]
month = x[4:-2]
day = x[7:]
month_ditc[year].setdefault(month, []).append(day)
print dict(month_ditc)
结果:
{'2017': {'APR': ['22'], 'MAR': ['05']}, '2016': {'FEB': ['10', '09']}, '2018': {'AUG': ['15']}}