【问题标题】:How to retrieve a image url from a list of dictionaries and display it如何从字典列表中检索图像 url 并显示它
【发布时间】:2022-01-12 19:19:08
【问题描述】:

我有一个包含产品数据的字典列表。每个产品都有一个图片网址。数据看起来很像下面。我编写了下面的代码,它按预期工作,但我很确定这可以通过从items_dicts 检索网址一步完成。我改为使用字典理解返回一个新的字典 item_dict 给定一个特定的 uniq_id,然后继续从 item_dict 检索 url。

数据:

items_dicts = [
   {
      "uniq_id":"123987",
      "sku":"123",
      "name":"ABC",
      "cat":"DEF",
      "cat_tree":"A|B|C",
      "image_urls":"http://sitecom/image1.tif"
   },
    {
      "uniq_id":"987123",
      "sku":"987",
      "name":"GHI",
      "cat":"JKL",
      "cat_tree":"Z|Y|X",
      "image_urls":"http://sitecom/img/image2.tif"
   }
]

代码:

# import modules
import urllib.request
from PIL import Image

# Return a specific product dict and assign it to item_1
item_dict = {i['uniq_id'] : i for i in items_dicts}
item_1 = item_dict.get('987123', 'None')

# Retrieve img url from item_1 dict
# And save it as item_img.png
urllib.request.urlretrieve(item_1.get('image_urls'),"img.png")

# Open item img and display it
item_img = Image.open("img.png")
item_img.show()

【问题讨论】:

    标签: python python-3.x python-requests python-imaging-library urllib


    【解决方案1】:

    编辑:

    要从您的 dicts 列表中获取一个特定值,例如 uniq_id 是 123987,您可以使用以下命令:

    [x['image_urls'] for x in items_dicts if x['uniq_id'] == '123987']
    

    我不确定您的确切意图,但您可以通过使用列表理解轻松地从您的 dicts 列表中获取所有 URL 的列表:
    [x['image_urls'] for x in items_dicts]
    

    给你:

    ['http://sitecom/image1.tif', 'http://sitecom/img/image2.tif']
    

    然后您可以获取此列表并根据需要显示它。

    【讨论】:

    • 我想使用 uniq_id 键仅检索一种特定产品的 URL。
    • @elideli 如果您事先知道您的uniq_id 密钥,那么您会看到我编辑的答案,它将返回您需要的 URL。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-09
    • 1970-01-01
    • 2017-01-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多