Как добавить значение ключа, это список, только если они имеют совпадающие значения? - PullRequest
0 голосов
/ 11 декабря 2018

Итак, у меня есть этот список словарей:

[{u'id': u'53532', u'name': u'IMG_1.jpg'},
 {u'id': u'53533', u'name': u'IMG_2.jpg'},
 {u'id': u'53534', u'name': u'IMG_3.jpg'}]

И этот список кортежей:

[(53532, image ,'https://sample.jpg'),
 (53533, image ,'https://sample.jpg'),
 (53534, image ,'https://sample.jpg')
]

Как мне сравнить значение идентификатора словаря со значением в кортеже иесли они совпадают, чтобы добавить кортеж к новому ключу в словаре, который соответствует:

Например, если они совпадают, чтобы выглядеть примерно так:

{u'id': u'53532',
 u'name': u'IMG_1.jpg',
 u'img_attr':(53532, image ,'https://sample.jpg')
}

1 Ответ

0 голосов
/ 11 декабря 2018

Python 3.5 +

Вы можете превратить свой список кортежей в словарь со значениями кортежей, используя id в качестве ключа:

d = {i: tuple(j) for i, *j in L_tup}

Затем используйте понимание списка для своего результата:

res = [{**myd, 'img_attr': d[int(myd['id'])]} for myd in L_dict]

Python 2.7

Последовательность и распаковка словаря не поддерживаются в Python 2.x.Здесь вы можете использовать:

d = {i: (j, k) for i, j, k in L_tup}

for myd in L_dict:
    myd['img_attr'] = d[int(myd['id'])]

Тогда ваш желаемый результат будет L_dict.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...