如何在Python中的字典上执行函数

如何在Python中的字典上执行函数,python,json,dictionary,Python,Json,Dictionary,我有一个JSON文件,我想将所有日期字符串转换为日期类型。现在,我的脚本在JSON字典中循环,并将这些值写入数据库。如何在整个字典上执行字符串到日期的转换 这里是我的代码片段,它循环遍历对象。我想将我的CreatedDate输出从2015年2月17日16:53:25转换为 至2015-02-17 16:53:25 现在,我正在使用CreatedDate=datetime.datetime.strptimeCreatedDate,%m/%d/%Y%H:%m:%S来实现后一个输出,如何在为Creat

我有一个JSON文件,我想将所有日期字符串转换为日期类型。现在,我的脚本在JSON字典中循环,并将这些值写入数据库。如何在整个字典上执行字符串到日期的转换

这里是我的代码片段,它循环遍历对象。我想将我的CreatedDate输出从2015年2月17日16:53:25转换为 至2015-02-17 16:53:25

现在,我正在使用CreatedDate=datetime.datetime.strptimeCreatedDate,%m/%d/%Y%H:%m:%S来实现后一个输出,如何在为CreateDate截取的以下代码上执行此操作

for sr in decoded2['Response']['ListOfServiceRequest']['ServiceRequest']:
    SRAddress = sr['SRAddress']
    Latitude = sr['Latitude']
    Longitude = sr['Longitude']
    SRNumber = sr['SRNumber']
    FirstName = sr['FirstName']
    LastName = sr['LastName']
    HomePhone = sr['HomePhone']
    CreatedDate = sr['CreatedDate']

也许我误解了,但您能否不简单地使用strftime将日期转换回具有所需格式的字符串

def convert_date_string(s_date_in):
    date_in = datetime.datetime.strptime(s_date_in, "%m/%d/%Y %H:%M:%S")
    return datetime.datetime.strftime(date_in, "%Y-%m-%d %H:%M:%S")

for sr in decoded2['Response']['ListOfServiceRequest']['ServiceRequest']:
    sr['CreatedDate'] = convert_date(sr['CreatedDate'])

由于您的初始结构是一个JSON字符串,您可以编写一个自定义字符串并检查该字符串,以确定它是否可以是一个日期字符串

或者,您可以使用kwarg并向其传递自定义函数。例如:

json_string = '{"key": "02/17/2015 16:53:25", "key2": {"nest": 1,"nest2": "blah"}}'
import json

def obj_hook(dct):
    for k, v in dct.iteritems():
        if isinstance(v, basestring):
            # Put your date time detection here. Also add additional type checks.
            dct[k] = 'Replaced-- {}'.format(v)
    return dct

result_dict = json.loads(json_string, object_hook=obj_hook)

print result_dict
>>> {u'key2': {u'nest': 1, u'nest2': 'Replaced-- blah'}, u'key': 'Replaced-- 02/17/2015 16:53:25'}

如果您只想在适当的位置更改字典的值,那么这样做可能有些过分。xnx的回答表明,您可以在循环中简单地更改字典的值。

我不确定我是否理解这个问题,当您在获取CreatedDate后调用strTime时,有什么不起作用?甚至在sr['CreatedDate']上?我想你是对的,也许我想得太多了。