我有一个嵌套的for循环,但是我一辈子都无法弄清楚如何将其转换为嵌套的列表理解。我似乎不太了解嵌套列表组合的工作原理,因此,如果您还可以添加说明,那将非常有帮助。
这是我尝试通过循环提取的数据结构(用于市场营销API):
list_of_orders = [{'Campaign ID': 1234, 'Orders': [{'Order ID': 0001, ...}, {'Order ID': 0002, ...}, ...]}, {'Campaign ID': 5678, 'Orders': [{...}, ...]}, ...]
这是循环:
order_ids = []
for i in list_of_orders:
for order in i.get('Orders'):
order_ids.append(str(order.get('Order ID')))
我如何-并且应该-将其转换为列表组件?是更快/更pythonic /更好的做法吗?
答案 0 :(得分:3)
以下方法应该起作用:
order_ids = [str(order.get('Order ID')) for i in list_of_orders for order in i.get('Orders')]
嵌套for
表达式的顺序对某些人来说是违反直觉的,因为它实际上并不符合自然语言范围。
它可能比基于循环的方法稍快一些,但是它具有相同的渐近时间复杂度。虽然理解力是Python的,但Zen of Python指出:“可读性很重要”!所以我会坚持循环。
答案 1 :(得分:0)
我如何(应该)将其转换为列表组件?是更快/更pythonic /更好的做法吗?
是的。不,不。