将变量转换为字典

时间:2014-02-21 08:07:15

标签: python python-3.x dictionary

我有类似这样的东西,其中trade_date,effective_date和termination_date是日期值:

tradedates = dict(((k, k.strftime('%Y-%m-%d')) 
  for k in (trade_date,effective_date,termination_date)))

我明白了:

{datetime.date(2005, 7, 25): '2005-07-25',
 datetime.datetime(2005, 7, 27, 11, 26, 38): '2005-07-27',
 datetime.datetime(2010, 7, 26, 11, 26, 38): '2010-07-26'}

我想要的是:

{'trade_date':'2005-07-25','effective_date':'2005-07-27','termination_date':'2010-07-26'}

我如何实现这一目标?

3 个答案:

答案 0 :(得分:8)

使用vars

>>> import datetime
>>>
>>> trade_date = datetime.date(2005, 7, 25)
>>> effective_date = datetime.datetime(2005, 7, 27, 11, 26, 38)
>>> termination_date = datetime.datetime(2010, 7, 26, 11, 26, 38)
>>>
>>> d = vars() # You can access the variable as d['name']
>>> tradedates = {
...     name: d[name].strftime('%Y-%m-%d')
...     for name in ('trade_date', 'effective_date', 'termination_date')
... }
>>> tradedates
{'effective_date': '2005-07-27', 'termination_date': '2010-07-26', 'trade_date': '2005-07-25'}

答案 1 :(得分:4)

对于那些大小的东西,我会直接创建dict

result = {
    'trade_date': format(trade_date, '%Y-%m-%d'),
    'effective_date': format(effective_date, '%Y-%m-%d'),
    # etc....
}

答案 2 :(得分:0)

我不确定我的问题是否正确。但是,让我解释一下我理解的内容和我对此的回答:

您知道变量名称:trade_date,effective_date,termination_date 他们有数据

你可以很容易地做到:

tradedates = dict()
for k in ('trade_date','effective_date','termination_date'):
    tradedates[k] = eval(k).strftime('%Y-%m-%d')      // eval will evaluate them as a variable name not as a string.

这会给你一个类似的最终词典:

{
  'trade_date': <date_string_according_to_the_format_above>
  'effective_date': <date_string_according_to_the_format_above>
  'termination_date': <date_string_according_to_the_format_above>
}