【发布时间】:2020-02-26 22:48:36
【问题描述】:
我有这个不同级别的json:
[{'A': 1, 'B': 2, 'CA': {'CA1': '3', 'CA23': '4'}},
{'A': 1, 'B': {'CA1': '3'}, 'CA': {'CA1': '3', 'CA23': '4'}}]
我只想使用列表理解获取每一行的值: 预期结果是:
[[1, 2, '3', '4'], [1, '3', '3', '4']]
不使用列表解析,此代码可以工作:
values = []
for row in json:
rows = []
for item in row.items():
if str(row[item[0]]).startswith("{"):
temp = row[item[0]].values()
else:
temp = [row[item[0]]]
rows.extend(temp)
values.append(rows)
一些想法?
【问题讨论】:
-
我不会尝试将其放入列表理解中,而是首先考虑改进。例如,
if str(row[item[0]]).startswith("{")不是你如何检查一个对象是否是一个dict,你应该使用isinstance(item[1], ),注意,使用@987654329的重点 @ 是您正在迭代键和值,通常,您会执行for key, value in some_dict.items()并且它只是if isinstance(value, dict)... -
有什么问题? Stack Overflow 不是免费的代码编写服务,请参阅help center、How to Ask。
-
我认为您不能将使用
extend()的循环转换为列表理解。列表推导式每个输入元素只能生成一个输出元素。
标签: python json list-comprehension