在Python 2.7中创建嵌套字典推导式
我从MySQL的查询中得到了一个嵌套的元组,里面包含了一些结果,格式是(datetime.date, float)。我想把这些结果整理成一个嵌套的字典,格式是[月/年][日期]。这样的话,我就可以通过readings['12/2011'][13]来获取'12/2011'年12月13日的读数。我的目的是制作图表,显示多个月份的每日读数。
我现在遇到的问题是,我需要先设置字典的第一维,也就是唯一的月/年标识符。目前我通过以下方式获取这些标识符:
list(set(["%02d/%04d" % (z[0].month, z[0].year) for z in raw]))
这里的raw是从数据库返回的元组列表。
其实我可以分两步来做这个事情:先设置字典的第一维,然后再遍历数据一次来设置第二维。不过我在想,是否有一种更简洁的方法,可以用嵌套的字典或列表推导式一次性完成这两个步骤。
如果能得到一些建议,我会非常感激。谢谢!
1 个回答
1
看起来要在一行代码里同时完成这两个层级的操作有点难。我建议你使用 defaultdict
,可以这样做:
res = defaultdict(dict)
for z in raw:
res["%02d/%04d"%(z[0].month, z[0].year)][z[0].day] = z