После очистки вашего ввода:
theme = {'ADV': ['RAF', 'WS', 'BJ'],
'BC': ['B', 'SS', 'S'],
'LS': ['WF', 'SS']}
names = ['Dubai', 'India', 'Monacco']
all_themes = {'Dubai': {'RAF', 'B'},
'India': {'WF', 'SS'}}
вы можете написать удобное словарное понимание, как это:
res = {k: [k_ for k_, v_ in theme.items() if any(x in v_ for x in all_themes.get(k, []))] for k in names}
, которое выдает:
{'Dubai': ['ADV', 'BC'], 'India': ['BC', 'LS'], 'Monacco': []}
Детали понимания:
{k: <value> for k in names}
пока все хорошо, но что должно быть <value>
? ..
Проверьте ключ all_themes
(город)одно за другим, если любое из значений присутствует в значениях ключей theme
, присвойте город соответствующему ключу из theme
.
aka:
список ключей theme
, для которых в соответствующих all_themes
значениях можно найти хотя бы одно значение, которое они содержат.Итак:
[k_ for k_, v_ in theme.items() if any(x in sub_v for x in all_themes.get(k, []))]