我需要做的就是仅获取“美国”来源产品的所有“ 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']
答案 0 :(得分:2)
最后一个块应该可以工作,但是您有一个赋值=
而不是布尔值==
。
prod_image = [{d['id']: d.get('image_uris', {}).get('normal', 'N/A')} for d in card_dict if d['origin'] == 'US']