簡體   English   中英

Python嵌套列表理解錯誤

[英]Python Nested List Comprehension Error

我正在嘗試將普通的嵌套迭代轉換為嵌套列表comp,但遇到了麻煩。

for k in r.json()['app_list']:
    for i in titles:
        if k['name'] == i['name'] and k['platform'] == i['platform']:
            array.append(session.get(k['api_url'], headers=headers).json())
return array

工作正常,但是

return [session.get(k['api_url'], headers=headers).json()
        for i in titles for k in r.json()
        if k['name'] == i['name'] and k['platform'] == i['platform']]

引發此錯誤

if k['name'] == i['name'] and k['platform'] == i['platform']]
TypeError: string indices must be integers

您的嵌套順序錯誤,並且忘記了從r.json()字典中獲取'app_list'鍵。

列表理解循環仍以相同的順序列出,嵌套時從左到右。 換句話說,使用原始嵌套for語句相同的順序

return [session.get(k['api_url'], headers=headers).json()
        for k in r.json()['app_list']
        for i in titles
        if k['name'] == i['name'] and k['platform'] == i['platform']]

以上是通過把一切都在簡單地達到array.append()調用在前面 ,然后去除:冒號來自forif語句,並把結果里面[...]方括號。

您忘記了對r.json()['app_list']訂閱,這是導致異常的真正原因; r.json()生成一個字典,因此每個k都綁定到該字典中的一個 ,從而導致k['name']訂閱失敗。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM