GAE-Python-x27;夹具';日期一起变成一个';树&x27;结构

GAE-Python-x27;夹具';日期一起变成一个';树&x27;结构,python,google-app-engine,date,datetime,Python,Google App Engine,Date,Datetime,我需要将python中的日期分解为:年、月、日和时间(小时) 我有一个对象列表,每个对象都有一个日期属性: startDate=db.DateTimeProperty(auto_now_add=True) date属性包含、年、月、日和时间 我希望创建一个新的嵌套列表(字典),其中: 外部列表-是一个年份列表(至少存在于一个输入日期中)->每年内部一个月列表(至少存在于一个输入日期中)->这几天内部(与输入列表中的月-天相同)->这几天内部一个时间列表(小时)。。。每个人都指向各自的对象 我希

我需要将python中的日期分解为:年、月、日和时间(小时)

我有一个对象列表,每个对象都有一个日期属性:

startDate=db.DateTimeProperty(auto_now_add=True)
date属性包含、年、月、日和时间

我希望创建一个新的嵌套列表(字典),其中:

外部列表-是一个年份列表(至少存在于一个输入日期中)->每年内部一个月列表(至少存在于一个输入日期中)->这几天内部(与输入列表中的月-天相同)->这几天内部一个时间列表(小时)。。。每个人都指向各自的对象

我希望这很容易理解

如果我得到以下列表作为输入:

{obj1 -> (2000 Dec 18 9:00AM), obj2 -> (2000 Dec 19 1:00PM)}
它会把它们夹在一起,这样我就可以

(2000) -> (Dec) -> {(18) -> (9:00AM) -> obj1 ,(19) -> (1:00PM) -> obj2}
我希望这是有道理的

基本上,我有很多有日期的活动,我想这样列出:

Year ->
Month(s) of interest->
Day(s) of interest->
(event times)
.
.
.

Another Year ->
Relevant Month(s) ->
Relevant Day(s) ->
(event times)
.
.
.
而不是:

(Event1 : complete date & time) , (Event2 : complete date & time) , (event3 : complete date & time)
谢谢

您可以尝试生成格式更好的输出:

for k,v in d.items():
    for j,h in v.items():
        print k,j,h
我得到的输出是:

2000 11 {18: {6: <__main__.a instance at 0x0232E9E0>}}
2000 12 {18: {9: <__main__.a instance at 0x0232E940>}, 19: {13: <__main__.a instance at 0x0232E990>}, 6: {7: <__main__.a instance at 0x0232EA08>}}
2001 11 {18: {9: <__main__.a instance at 0x0232E9B8>}}
200011{18:{6:}
2000 12 {18: {9: }, 19: {13: }, 6: {7: }}
2001 11 {18: {9: }}
您可以尝试生成格式更好的输出:

for k,v in d.items():
    for j,h in v.items():
        print k,j,h
我得到的输出是:

2000 11 {18: {6: <__main__.a instance at 0x0232E9E0>}}
2000 12 {18: {9: <__main__.a instance at 0x0232E940>}, 19: {13: <__main__.a instance at 0x0232E990>}, 6: {7: <__main__.a instance at 0x0232EA08>}}
2001 11 {18: {9: <__main__.a instance at 0x0232E9B8>}}
200011{18:{6:}
2000 12 {18: {9: }, 19: {13: }, 6: {7: }}
2001 11 {18: {9: }}

那么,问题出在哪里?你在哪里卡住了?我是Python新手,我遗漏了谜题的两个部分,一个是GodMan提供的答案,另一个是如何将日期分解为四个部分(年、月、日和时间)…你可能需要查看
datetime
以及
time
模块,以便将时间转换为所需格式,甚至把它拆分成一个类似format的结构那么,问题是什么?你在哪里卡住了?我是Python新手,我遗漏了谜题的两个部分,一个是GodMan提供的答案,另一个是如何将日期分解为四个部分(年、月、日和时间)…你可能需要查看
datetime
以及
time
模块,以便将时间转换为所需格式,甚至将其拆分为类似结构的格式,我认为您应该为ytree[年][月][日][小时]创建一个dict。原因:它是可伸缩的。假设Arthur想再嵌套1级,以防datetime字段大于4。我认为您应该为ytree[年][月][日][小时]创建一个dict。原因:它是可伸缩的。假设Arthur想多嵌套一层,以防datetime字段大于4@Arthur:肯定有更好的方法可以做到这一点。您只需要做一件事:您能否使用GAE在一个巨大的数据集上运行此代码,并告诉我们需要多少时间,以便我们可以基准测试一个更好的答案?我可以随机选择基准测试的日期。但代码用于为非常特定/罕见的事件创建树。。不太可能有100多个实例,我相信1000以下的任何实例都可以,因为这是线性复杂度,这很好。。我最初考虑的方向(寻找匹配项)远比这糟糕。好吧,因为你必须至少覆盖列表中的所有记录一次,时间复杂度将是线性的。但是,您得到的结果字典将逐步将dict的氨化复杂性降低到O(1)。@Arthur:肯定有更好的方法可以做到这一点。您只需要做一件事:您能否使用GAE在一个巨大的数据集上运行此代码,并告诉我们需要多少时间,以便我们可以基准测试一个更好的答案?我可以随机选择基准测试的日期。但代码用于为非常特定/罕见的事件创建树。。不太可能有100多个实例,我相信1000以下的任何实例都可以,因为这是线性复杂度,这很好。。我最初考虑的方向(寻找匹配项)远比这糟糕。好吧,因为你必须至少覆盖列表中的所有记录一次,时间复杂度将是线性的。但是,您得到的结果字典将逐步将dict的氨化复杂性降低到O(1)。