我有一系列的像这样的字典:
[{'id': 1, 'tags': ['tag_a', 'tag_b']}, {'id': 2, 'tags': ['tag_c', 'tag_b']}]
并且我想将此数组转换为基于的新数组,ticket_id
并且每个tag
值都应该是数组中的一个对象。
我几乎使用以下功能做到了:
raw = [{'id': 1, 'tags': ['tag_a', 'tag_b']}, {'id': 2, 'tags': ['tag_c', 'tag_b']}]
def transform(ticket):
result = []
for tag in ticket.get('tags', []):
result.append({'ticket_id': ticket.get('id'), 'tag': tag, 'sync': '123'})
return result
print(list(map(transform, raw)))
但是它返回了类似的内容[[{...}], [{...}]]
,语法看起来很奇怪。
什么是返回以下内容的正确方法:
[{'ticket_id': 1, 'tag': 'tag_a', 'sync': '123'}, {'ticket_id': 1, 'tag': 'tag_b', 'sync': '123'}, ...]
您只需要整理结果。本质上,您在需要平面地图操作时使用了地图操作。
您可以通过使用嵌套列表理解来一次性完成此操作:
[x for ticket in raw for x in transform(ticket)]
当然,您可以执行以下操作:
[x for xs in map(transform, raw) for x in xs]
或者只是一个常规的嵌套循环将起作用。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句