[英]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()
調用在前面 ,然后去除:
冒號來自for
和if
語句,並把結果里面[...]
方括號。
您忘記了對r.json()
的['app_list']
訂閱,這是導致異常的真正原因; r.json()
生成一個字典,因此每個k
都綁定到該字典中的一個鍵 ,從而導致k['name']
訂閱失敗。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.