python-3.x - 将嵌套的 Json 转换为单个键值对
问题描述
我有一个 Keys 列表:
- 服务器
- 日期
- 严重性
- 过程
- 信息
如果我的 Dictionary 中有键“events”,我需要将键替换为“Message”,“indicator-type”的值将成为 message 的值
List1=[
{
"server": "10.10.0.123",
"date": 1561994754,
"severity": "INFO",
"process": "webapp",
"message": "server started."
},
{
"server": "10.10.0.202",
"date": 1561994757000,
"source": "jvm-x994a",
"events": [{
"indicator-type": "memory-low"
}]
},
{
"server": "10.10.0.202",
"date": 1561994773000,
"source": "jvm-x994a",
"events": [{
"indicator-type": "memory-low"
}
]
}
]
预期输出:
List1=[
{
"server": "10.10.0.123",
"date": 1561994754,
"severity": "INFO",
"process": "webapp",
"message": "server started."
},
{
"server": "10.10.0.202",
"date": 1561994757000,
"source": "jvm-x994a",
"message": "memory-low"
},
{
"server": "10.10.0.202",
"date": 1561994773000,
"source": "jvm-x994a",
"message": "memory-low"
}
]
}
]
到目前为止我已经尝试过:在下面的代码中,我试图检查“事件”键并将其替换为“消息”键,但是当我打印时它并没有替换它们的键值
output = []
d={}
for x in a:
d['server']=x['server']
if (str(x['date']).isdigit() == True):
d['date'] =2
# datetime.datetime.fromtimestamp(x['date'] / 1000.0).strftime('%Y-%m-%d %H:%M:%S.%f')
if ("events" in x):
for i in (x['events']):
if (i['indicator-level'] == 3):
d['severity'] = "INFO"
if (i['indicator-level'] == 7):
d['severity'] = "WARN"
if (i['indicator-type'] != None):
d['message'] = i['indicator-type']
解决方案
尝试这个。我已经修改了events
处理部分。
output = []
for item in List1:
d = {}
d['server'] = item['server']
if (str(item['date']).isdigit() == True):
d['date'] =2
# datetime.datetime.fromtimestamp(x['date'] / 1000.0).strftime('%Y-%m-%d %H:%M:%S.%f')
# get will give you None and not raise an exception if there is no events key.
if item.get('events') is not None:
for event in item['events']:
if event.get('indicator-level') == 3: d['severity'] = "INFO"
if event.get('indicator-level') == 7: d['severity'] = "WARN"
if event.get('indicator-type') is not None: d['message'] = event['indicator-type']
output.append(d)
print(output)
# [{'server': '10.10.0.123', 'date': 2}, {'server': '10.10.0.202', 'date': 2, 'message': 'memory-low'}, {'server': '10.10.0.202', 'date': 2, 'message': 'memory-low'}]
推荐阅读
- mysql - 适用于 php 5.6 的查询不会在 php 7 上引发错误
- c# - 如何禁用 DropShadow 或 ContentDialog 的任何阴影?UWP、XAML
- google-analytics - Google Analytics - 细分/过滤视图 - 基于自定义属性
- python - 在 pyqt 中将 Worker 对象移动到 QThread 之前设置信号和槽
- node.js - 为什么我在快递中处理的 cors 不起作用?
- c# - 有没有办法将组合框与本地磁盘 C:/ 或 D:/ 上的目录绑定
- c - 添加时链接不指向下一个元素
- excel - Excel 错误消息“一个或多个命名的无效引用”
- wpf - 如何在数据网格中获得最大行大小?
- javascript - 全局颜色变量