Решение без использования лямбды, обратите внимание, что это решение не поддерживает тот же порядок, что и в вашем вопросе:
feed_mapping = {'BC': 11, 'HA': 12, 'AB': 16, 'GR': 18}
x = ['AB-16007891', 'HA-4625798', 'GR-4444545', 'BC-4447764', 'HA-46257854']
feed = [{"feed": feed_value, "id": [i for i in x if feed_key in i]} for
feed_key, feed_value in feed_mapping.items()]
print(feed)
>>> [{'feed': 11, 'id': ['BC-4447764']}, {'feed': 12, 'id': ['HA-4625798', 'HA-46257854']}, {'feed': 16, 'id': ['AB-16007891']}, {'feed': 18, 'id': ['GR-4444545']}]
Я разделил ваш ключ и значение из feed_mapping, используя следующий цикл for:
for feed_key, feed_value in feed_mapping.items()]
Затем у меня есть секунда (вложенная в цикл для добавления элементов в x
в поле id
:
i for i in x
Я заметил, что вы хотите добавить идентификатор только в том случае, если ключ feed_mapping
находится в строке i
, что я делаю с помощью следующего оператора if внутри вложенного цикла for:
[i for i in x if feed_key in i]