【发布时间】:2018-12-18 18:36:06
【问题描述】:
不确定我是否正在尝试实现不可能的目标?我有这个 JSON 字符串:
dot= [{"type": 1, "date": "2018-12-02T00:40:03.2186792+00:00", "device":
[{"id": "20165cf4e596", "deviceName": "17", "records": [{"timestamp": "2018-
12-02T00:40:00.499+00:00", "grp": "undefined", "val": 887}]}, {"id":
"5f401a6a6f66", "deviceName": "18", "records": [{"timestamp": "2018-12-
02T00:42:00.499+00:00", "grp": "undefined", "val": 1063}, {"timestamp":
"2018-12-02T00:41:00.498+00:00", "grp": "undefined", "val": 907}]}, {"id":
"569bb0147a72", "deviceName": "19", "records": [{"timestamp": "2018-12-
02T00:44:00.499+00:00", "grp": "undefined", "val": 817}, {"timestamp":
"2018-12-02T00:43:00.498+00:00", "grp": "undefined", "val": 1383}]}, {"id":
"ef829aa3", "deviceName": "2", "records": [{"timestamp": "2018-12-
02T00:46:00.499+00:00", "grp": "undefined", "val": 1173}]}, {"id":
"388ae8f2fa64", "deviceName": "17", "records": [{"timestamp": "2018-12-
02T00:41:00.499+00:00", "grp": "undefined", "val": 866}, {"timestamp":
"2018-12-02T00:32:00.492+00:00", "grp": "undefined", "val": 1080}]}, {"id":
"01f874b30b55", "deviceName": "19", "records": [{"timestamp": "2018-12-
02T00:43:00.499+00:00", "grp": "undefined", "val": 1050}, {"timestamp":
"2018-12-02T00:42:00.498+00:00", "grp": "undefined", "val": 1084}]}]}]
我想实现以下目标:
[{'id': '20165cf4e596','deviceName': '17','timestamp': '2018-12-
02T00:40:00.499+00:00','grp': 'undefined','val': 887},
{'id': '5f401a6a6f66','deviceName': '18','timestamp': '2018-12-
02T00:42:00.499+00:00','grp': 'undefined','val': 1063},
{'id': '5f401a6a6f66','deviceName': '18','timestamp': '2018-12-
02T00:41:00.498+00:00','grp': 'undefined','val': 907},...]
我使用了以下代码:
for i in dot:
for k in i['device']:
d2= [[{l:m},{'value':v}] for l,m in k.items() for p in m if
isinstance(p,list) for v in p]
print(d2)
得到了空列表:
[]
[]
[]
[]
提前致谢
【问题讨论】:
-
检查为什么
if isinstance(p,list)总是假的;可能通过将您的理解展开为经典循环 -
另外:您的输入数据在字符串中有换行符,因此没有人可以按原样复制/粘贴进行测试。请更正这一点。
-
谢谢@Jean-FrançoisFabre 不确定您的意思。不过好像已经解决了。谢谢
标签: python json python-3.x dictionary nested