将日期时间对象列表分为键(日期)和值(时间)

时间:2014-03-18 00:12:24

标签: python sql datetime

我在Calls表的CREATEDDATE下有一列datetime对象。

2013-08-09 12:19:09
2012-06-10 09:08:10
2009-08-11 10:15:00
2013-08-09 11:20:09
2013-08-09 06:12:04
2013-08-09 01:09:15

我想创建一个dict,使用日期作为键,时间作为值。

我原本想跑

select (CAST CREATEDDATE as DATE) from Calls where Town = 'New York'

然后浏览每个日期以显示每个日期的时间

select(CAST CREATEDDATE as TIME) from Calls where CREATEDDATE = '8/11/2009'

并将值输入到dict中,但上述查询不起作用。

我正在寻找一种简单的方法让我将日期时间对象列表转换为dict,或者根据日期从datetime对象列中选择时间。

1 个答案:

答案 0 :(得分:1)

您可以将datetime读作str并使用以下代码创建dict:

dt = ['2013-08-09 12:19:09','2012-06-10 09:08:10','2009-08-11 10:15:00']
adict={}
adict.update(ddtt.split() for ddtt in dt)
print adict

输出:

{'2009-08-11': '10:15:00', '2012-06-10': '09:08:10', '2013-08-09': '12:19:09'}

编辑:

如果您有多次相关的相同日期,则可以创建值为指向列表的字典键。例如,如果您的数据(重复2013-08-09不同时间)

dt = ['2013-08-09 12:19:09','2012-06-10 09:08:10','2009-08-11 10:15:00', '2013-08-09 12:19:10']

您可以获得输出:

{'2009-08-11': ['10:15:00'], '2012-06-10': ['09:08:10'], '2013-08-09': ['12:19:09', '12:19:10']}

以下是获取此内容的代码:

adict={}
for ddtt in dt:
    data=ddtt.split()
    if data[0] in adict:
        adict[data[0]].append(data[1])
    else:
        adict[data[0]] = [data[1]]