列表理解Python中的字典

kr98yfug  于 2023-02-17  发布在  Python
关注(0)|答案(3)|浏览(177)

我有一个API结果列表:

result = [(True, 
        {'result': 
            {'skus': 
                [{'sku': '123'}, {'sku': '124'}]
                }
        }
    ),
    (True, 
        {'result': 
            {'skus': 
                [{'sku': '125'}, {'sku': '126'}]
                }
        }
    )
]

所以,我需要得到每个'sku'
我可以用两个循环来完成:

for elem in result:
for sku in elem[1]["result"]["skus"]:
     print(sku)

我怎么能用一根绳子做呢?

mqkwyuun

mqkwyuun1#

我怎么能用一根绳子做呢?
这就是你要找的吗?

print([sku for elem in result for sku in elem[1]["result"]["skus"]])
cpjpxq1n

cpjpxq1n2#

您可以使用列表解析在一行代码中从结果列表中提取所有'sku'值。

result = [(True,            {'result':              {'skus':                [{'sku': '123'}, {'sku': '124'}]
             }
           }
          ),
          (True, 
           {'result': 
             {'skus': 
               [{'sku': '125'}, {'sku': '126'}]
             }
           }
          )
         ]

skus = [sku['sku'] for elem in result for sku in elem[1]['result']['skus']]

print(skus)

这将打印所有'sku'值的列表:

['123', '124', '125', '126']

列表解析本质上是在一行中编写嵌套for循环的一种简写方式,列表解析的输出是从'result'列表中提取的所有'sku'值的列表。

b1zrtrql

b1zrtrql3#

一个for循环的线性时间复杂度:

[result[x][1]['result']['skus'] for x,y in enumerate(result)]

#[[{'sku': '123'}, {'sku': '124'}], [{'sku': '125'}, {'sku': '126'}]]

按照@buran的建议编辑

[item[1]['result']['skus'] for item in result]

相关问题