从词典值创建新词典

时间:2017-01-25 13:20:34

标签: python scrapy

我在列表中有以下值:

'image_result': [{'checksum': '701e172bd980177ae1311f265a753582',
               'path': 'full/ee4d4341b88168972e76c61f45b8db10b349f175.jpg',
               'url': 'http://image-url.com/ID71026700-0000-0500-0000-0000033eb03c.jpg'},
              {'checksum': 'e0b3cada2a8377913bc779a16f1d9e36',
               'path': 'full/410c964db8de6138622c1e1b3b94062b69caedc8.jpg',
               'url': 'image-url.com/ID71026700-0000-0500-0000-0000033eb03d.jpg'},
              {'checksum': '39c9a06f221ba584f691f0def0fde2c4',
               'path': 'full/574dcb9a6af1ea7b733e6986c6a10ba815ca23b4.jpg',
               'url': 'image-url.com/ID71026700-0000-0500-0000-0000033eb03e.jpg'}]

我希望得到“路径”。将值格式化并将其格式化为以下内容,使其成为全局image键:

'image': 'full/ee4d4341b88168972e76c61f45b8db10b349f175.jpg',
'image': 'full/ee4d4341b88168972e76c61f45b8db10b349f175.jpg',
'image': 'full/574dcb9a6af1ea7b733e6986c6a10ba815ca23b4.jpg'

我的代码为我提供了如上所示的正确输出,但它只保存了最后的路径'值因为它在循环的每个循环中被覆盖:

for x in item['image_result']:
   item['image'] = x.get('path')

这些是Scrapy项目,并且无法在每次我想插入新项目时覆盖项目值,以确定是否可行。我对蟒蛇也很陌生,虽然我在过去几天里进行了大量的研究,但我们还没有找到解决这个问题的方法。

1 个答案:

答案 0 :(得分:1)

您没有更新子密钥,而是创建全局image密钥。

改为:

for x in item['image_result']:
   x['image'] = x.get('path')

如果要提取图像列表(存储为全局images密钥),您只需执行以下操作:

item['image'] = [x.get('path') for x in item['image_result']]