python - 将嵌套 for 循环转换为嵌套列表理解

标签 python for-loop nested list-comprehension

我有一个嵌套的 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/更好的做法吗?

最佳答案

以下应该有效:

order_ids = [str(order.get('Order ID')) for i in list_of_orders for order in i.get('Orders')]

嵌套 for 表达式的顺序对某些人来说是违反直觉的,因为它并不真正符合自然语言范围。

它可能比基于循环的方法快一点,但它具有相同的渐近时间复杂度。虽然推导式是 Pythonic 的,但 Zen of Python声明:“可读性很重要”!所以我会坚持使用循环。

关于python - 将嵌套 for 循环转换为嵌套列表理解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54344595/

相关文章:

python - 使用 youtube 的 API 在播放列表中插入视频时的 Oauth2.json 文件

java - 从字符串中提取逗号分隔的值

php - 使用正则表达式删除相同类型的 html 嵌套标签的最终解决方案?

python - 用win32com打开excel提示 "Name cannot be the same as built-in name"我手动打开不提示

python NoneType 对象不可迭代

python - ubuntu 16.04.3 中的哈希和不匹配

java - Selenium、Java、if-else 语句无法正常工作、NoSuchElementException

javascript - 从未见过这样的 for 循环 这是如何工作的?

c++ - 嵌套结构 : with invalid use of non-static member when define struct pointer

oracle - 如何从嵌套 Oracle 过程中检索值?