首页 > 解决方案 > 将字典键值从 UNIX 时间转换为人类可读时间

问题描述

我有一个带有字典的变量:

例如:

myVariableDictionary = {'result':{'result':[{'Time':1580619600},{'Time':1580619600}]}}

等等..我想将unix时间戳转换为人类可读的时间戳。

如果我拉一个键,我可以这样做:

placeholderVariable= myVariableDictionary['result']['result'][0]['Time']
myNewTimeVariable = datatime.datatime.fromtimestamp(placeholderVariable)

但我想为价值的永远迭代就地执行此操作。键名始终相同,并且只是嵌套。

标签: pythonpython-3.xdatetimedictionaryunix-timestamp

解决方案


你可以做这样的事情——假设你的结构中只有字典和列表。否则,您可能需要在这些 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 正在递归调用自身。请记住,根据您传入的对象的大小和引用(即自引用或非常大的输入),您最终可能会遇到运行时错误。如果您的数据集相对易于管理且简单明了,那么这不是问题。


推荐阅读