Работаете со словарем в Python? - PullRequest
0 голосов
/ 15 мая 2018
theme =  {
           'ADV': ['RAF', 'WS', 'BJ']
           'BC': ['B', 'SS', 'S']
           'LS': ['WF', 'SS'] }

names = ['Dubai', 'India', 'Monacco']

all_themes = {
                'Dubai': {'RAF', 'B'}
                'India': {'WF', 'SS'}
              }

Выход:

{
  'Dubai': ['ADV', 'BC']
  'India': ['IS', 'BC']
  'Monacco': []
 }

Перебирать список Имена , Проверять ключ (город) all_themes один за другим, если любое из значений присутствует в themes значениях ключа назначьте город соответствующей клавише из themes . Для справки, проверьте вывод.

1 Ответ

0 голосов
/ 15 мая 2018

После очистки вашего ввода:

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, []))]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...