将字典键值从 UNIX 时间转换为人类可读时间
Convert dictionary key values from UNIX time to human readable time
我有一个带有字典的变量:
EG:
myVariableDictionary = {'result':{'result':[{'Time':1580619600},{'Time':1580619600}]}}
等等,我想将 unix 时间戳转换为人类可读的时间戳。
如果我拉一个键,我可以这样做:
placeholderVariable= myVariableDictionary['result']['result'][0]['Time']
myNewTimeVariable = datatime.datatime.fromtimestamp(placeholderVariable)
但我想在值的每次迭代中就地执行此操作。键名总是相同的,只是简单地嵌套。
这是一种方式:
from datetime import datetime
d = {'result':{'result':[{'Time':1580619600},{'Time':1580619600}]}}
for i in d['result']['result']:
i['Time'] = datetime.fromtimestamp(i['Time'])
print(d)
{'result': {'result': [{'Time': datetime.datetime(2020, 2, 2, 5, 0)},
{'Time': datetime.datetime(2020, 2, 2, 5, 0)}]}}
您可以这样做 - 假设您的结构中只有字典和列表。否则,您可能需要向那些 if 语句添加其他情况...
from datetime import datetime
def time_converter(data):
for k, v in data.items():
if isinstance(v, (dict,)):
data[k] = time_converter(v)
elif isinstance(v, (list,)):
data[k] = [time_converter(item) for item in v]
elif k.lower() == 'time':
data[k] = datetime.fromtimestamp(v)
return data
d = {'result':{'result':[{'Time':1580619600},{'Time':1580619600}]}}
print(time_converter(d))
请注意 time_converter 正在递归调用自身。请记住,根据您传入的对象的大小和引用(即自引用或非常大的输入),您最终可能会遇到运行时错误。如果您的数据集相对易于管理且简单明了,则这不是问题。
我有一个带有字典的变量:
EG:
myVariableDictionary = {'result':{'result':[{'Time':1580619600},{'Time':1580619600}]}}
等等,我想将 unix 时间戳转换为人类可读的时间戳。
如果我拉一个键,我可以这样做:
placeholderVariable= myVariableDictionary['result']['result'][0]['Time']
myNewTimeVariable = datatime.datatime.fromtimestamp(placeholderVariable)
但我想在值的每次迭代中就地执行此操作。键名总是相同的,只是简单地嵌套。
这是一种方式:
from datetime import datetime
d = {'result':{'result':[{'Time':1580619600},{'Time':1580619600}]}}
for i in d['result']['result']:
i['Time'] = datetime.fromtimestamp(i['Time'])
print(d)
{'result': {'result': [{'Time': datetime.datetime(2020, 2, 2, 5, 0)},
{'Time': datetime.datetime(2020, 2, 2, 5, 0)}]}}
您可以这样做 - 假设您的结构中只有字典和列表。否则,您可能需要向那些 if 语句添加其他情况...
from datetime import datetime
def time_converter(data):
for k, v in data.items():
if isinstance(v, (dict,)):
data[k] = time_converter(v)
elif isinstance(v, (list,)):
data[k] = [time_converter(item) for item in v]
elif k.lower() == 'time':
data[k] = datetime.fromtimestamp(v)
return data
d = {'result':{'result':[{'Time':1580619600},{'Time':1580619600}]}}
print(time_converter(d))
请注意 time_converter 正在递归调用自身。请记住,根据您传入的对象的大小和引用(即自引用或非常大的输入),您最终可能会遇到运行时错误。如果您的数据集相对易于管理且简单明了,则这不是问题。