生成具有潜在扩展列的html表,并需要使用django重新排序列

时间:2011-12-22 02:46:05

标签: python django django-templates

我已经创建了一个字典列表,格式如下:

[{u'PLAN_A': True, u'PLAN_B': True, u'PLAN_C': True, u'PLAN_D': True, 
  u'PLAN_E': True, u'PLAN_F': True, 'date': u'2011-08-01', u'PLAN_G': True}
 {u'PLAN_A': True, u'PLAN_B': True, u'PLAN_C': True, u'PLAN_D': True, 
  u'PLAN_E': True, u'PLAN_F': True, 'date': u'2011-08-01', u'PLAN_G': True}]

这里有一点解释:

该列表包含检查特定月份是否已提供有关投资计划的信息的信息,如果信息可用,则为TRUE,如果不是FALSE - PLAN_A是投资计划的名称,这意味着其中有7个 - True / False指的是是否为该特定月份输入了信息

我想使用django创建一个HTML输出,如下所示:

DATE    PLAN_A  PLAN_B  PLAN_C
2010-01 TRUE    FALSE   TRUE
2010-02 TRUE    FALSE   TRUE
2010-03 TRUE    FALSE   FALSE

我不想对列名称进行硬编码(即PLAN_A,PLAN_B,PLANC),因为将来可能会有越来越多的计划。

我认为这将是一个用于创建<tr><td>的for循环。如果我将其作为R工作,我会将dataframe的列重新排列为我喜欢的方式(也许我希望PLAN_A位于第三列,但不是第一列),但知道字典不能排序,我不知道如何安排keys内部,正如您在我的数据集中看到的那样,date键位于第7列。

有人可以帮忙吗?感谢。

1 个答案:

答案 0 :(得分:1)

这里有一些代码以上面的格式给出一个列表(在正确的地方缺少逗号)会产生一些你可以使用的代码:

bydate = []
planNames = set()
for d in data:
    ddict = {'date': d['date']}
    plans = d
    del plans['date']
    planNames = planNames.union(plans.keys())
    ddict['plans']=plans
    bydate.append(ddict)

之后,'bydate'是:

[{'date': u'2011-08-01', 'plans': {u'PLAN_B': True, u'PLAN_C': True, u'PLAN_A': True, u'PLAN_F': True, u'PLAN_G': True, u'PLAN_D': True, u'PLAN_E': True}}, {'date': u'2011-08-22', 'plans': {u'PLAN_B': False, u'PLAN_C': True, u'PLAN_A': True, u'PLAN_F': False, u'PLAN_G': True, u'PLAN_D': True, u'PLAN_E': True}}]

您可以按日期键排序。 'planNames'是:

set([u'PLAN_B', u'PLAN_C', u'PLAN_A', u'PLAN_F', u'PLAN_G', u'PLAN_D', u'PLAN_E'])

这是数据中提到的所有计划名称的集合(如列表,但是唯一元素)。