Python 将变量转换为听写

Python 将变量转换为听写,python,python-3.x,dictionary,Python,Python 3.x,Dictionary,我有类似的例子,其中交易日期、生效日期和终止日期是日期值: 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', 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'}
如何实现这一点?

使用:


对于这种大小的东西,我会直接创建
dict

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

我不确定你的问题是否正确。但让我解释一下我的理解和我的答案:

您知道变量名称:交易日期、生效日期、终止日期 而且里面有数据

你可以很容易地做到:

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>
}
{
“交易日期”:
“生效日期”:
“终止日期”:
}

Yes falsetru这是正确的你好,谢谢你的答案是正确的,但是你能解释一下什么是d=vars()吗?我在代码中添加了一条注释。或者按照答案中的链接进行操作。嗨,d=vars()是什么?尽管我从未见过这种语法ever@jhon.smithfalsetru为您提供了一个指向文档的链接,值得先阅读:)@jhon.smith,语法?这只是一个赋值语句。虽然不建议在此处使用
eval
进行此操作-
vars/globals
,如@falsetru所示,将是从命名空间中提取的首选方法…不幸的是-您所做的
eval(k.strftime(…)
更改将评估格式化日期,您希望将格式应用于结果对象,否则您将在日期元素上执行减法操作-例如-今天将是:
eval('2014-02-21')
,这将使
1991
:)@JonClements正确。很抱歉,遗漏了放错位置的括号。修好了。感谢您指出。有很多比使用
eval()
更好的方法可以做到这一点,而且如果使用不当,eval是很危险的。您好,非常优雅的解决方案,对于像我这样的新手来说很清楚understand@jhon.smith不,没关系。我个人也会选择falsetru的。花点时间了解解决方案的工作原理,你会没事的。。。
{
  '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>
}