python - 将字典键值从 UNIX 时间转换为人类可读时间
问题描述
我有一个带有字典的变量:
例如:
myVariableDictionary = {'result':{'result':[{'Time':1580619600},{'Time':1580619600}]}}
等等..我想将unix时间戳转换为人类可读的时间戳。
如果我拉一个键,我可以这样做:
placeholderVariable= myVariableDictionary['result']['result'][0]['Time']
myNewTimeVariable = datatime.datatime.fromtimestamp(placeholderVariable)
但我想为价值的永远迭代就地执行此操作。键名始终相同,并且只是嵌套。
解决方案
你可以做这样的事情——假设你的结构中只有字典和列表。否则,您可能需要在这些 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 正在递归调用自身。请记住,根据您传入的对象的大小和引用(即自引用或非常大的输入),您最终可能会遇到运行时错误。如果您的数据集相对易于管理且简单明了,那么这不是问题。
推荐阅读
- javascript - 如何测试用作被调用函数参数的模拟方法 - 在 curry 函数中 - 而不是作为直接调用函数?
- qt - 为什么Qt渲染器每帧重建所有批次
- angular - 在 Angular 5 中创建一个库?
- ios - 我无法使用我的代码加载 Google AdMob gdpr 同意书
- javascript - 如何允许我的用户使用手机号码或电子邮件地址在 Cognito 用户池上重置密码?
- python - 即使将文件夹路径添加到 PATH env var,cmd 也找不到 python.exe 文件
- spring-boot - Spring数据Cassandra如何在保存时处理null
- amazon-web-services - AWS PinPoint - 来自邮递员的短信
- web - 从搅拌机导出的 USDZ 模型损坏
- c++ - 试图编译一个 cpp 文件,但命令提示符说找不到文件