繁体   English   中英

如何将条件应用于列表理解?

[英]How can I apply a condition to a list comprehension?

我需要能够做的是仅获取“原产地”为“美国”的产品的所有“id”和“img_uris”。

这是我正在使用的数据的粗略样本。

[
  {
    "product_type": "widget",
    "id": "1744556-ghh56h-4633",
    "manufacture_id": "AAB4567",
    "language": "en",
    "store_ids": [
      416835,
      456145
    ],
    "name": "Best Widget",
    "origin": "US",
    "manufactured": "2018-08-26",
    "uri": "https://bobswidgets.com/best_widget",
    "image_uris": {
      "small": "https://bobswidgets.com/small/best_widget_sm.jpg",
      "normal": "https://bobswidgets.com/medium/best_widget_md.jpg",
      "large": "https://bobswidgets.com/large/best_widget_lg.jpg"
    },
    "manufacture_cost": "12.50"
  },
  {
    "product_type": "widget",
    "id": "0956786-dje596-3904",
    "manufacture_id": "BCD13D",
    "language": "en",
    "store_ids": [
      "014329",
      "40123"
    ],
    "name": "Best Widget2",
    "origin": "US",
    "manufactured": "2018-10-03",
    "uri": "https://bobswidgets.com/best_widget_2",
    "image_uris": {
      "small": "https://bobswidgets.com/small/best_widget2_sm.jpg",
      "normal": "https://bobswidgets.com/medium/best_widget2_md.jpg",
      "large": "https://bobswidgets.com/large/best_widget2_lg.jpg"
    },
    "manufacture_cost": "13.33"
  }
]

我正在使用此代码循环遍历 json 并仅从“img_uris”中提取“id”和“normal”URL。

import ujson as json
import pandas as pd

with open('product.json', 'r') as f:
    json_text = f.read()

prod_dict = json.loads(json_text)
prod_image = [{d['id']: d.get('image_uris', {}).get('normal', 'N/A')} for d in prod_dict]

这很有效,然后我意识到似乎有更多的产品。 事实证明,并非所有产品的“原产地”都是“美国”。 我一直在试图弄清楚如何在列表理解中添加一个条件,以仅获取那些以“美国”作为“起源”而没有运气的人。 我发现的大多数示例都非常简单,并且不涉及字典。

我试过这样的事情,但它不起作用。

prod_image = [{d['id']: d.get('image_uris', {}).get('normal', 'N/A')} for d in card_dict if d['origin'] = 'US']

最后一个块应该可以工作,但是你有一个赋值=而不是布尔值==

prod_image = [{d['id']: d.get('image_uris', {}).get('normal', 'N/A')} for d in card_dict if d['origin'] == 'US']

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM