Как изменить список значений ключей в словаре на основе совпадений ключей другого словаря в python? - PullRequest
1 голос
/ 25 мая 2020

У меня есть словарь как,

ex_dict={'recency': ['current',
  'savings',
  'fixed',
  'current',
  'savings',
  'fixed',
  'current',
  'fixed',
  'fixed',
  'fixed',
  'current',
  'fixed'],
 'frequency': ['freq',
  'freq',
  'freq',
  'freq',
  'freq',
  'freq',
  'infreq',
  'freq',
  'freq',
  'freq',
  'infreq',
  'freq'],
 'money': ['med',
  'high',
  'high',
  'med',
  'high',
  'high',
  'low',
  'high',
  'md',
  'high',
  'high',
  'high']}

другой словарь,

cond_dict= {'recency': {'current': 0.33, 'fixed': 0.5},
           'frequency': {'freq': 0.83},
            'money': {'high': 0.67}}

Здесь я хотел бы заполнить список значений в ex_dict, если этот элемент существует в ключ словаря cond_dict.

например:

В словаре ex_dict есть ключ под названием «недавность», у него есть список из 12 элементов, здесь есть 3 уникальных элемента, например как (текущие, сберегательные, фиксированные).

Эти три элемента должны присутствовать в словаре ключей cond_dict, если какой-либо из элементов не существует в этом ключе dict, его значение должно быть добавлено как «RARE» в список, связанный с ex_dict.

Вот пример вывода: сохранение из исходного списка заменено на RARE, так как в ключе cond_dict не было экономии.

'recency': ['current',
  'RARE',
  'fixed',
  'current',
  'RARE',
  'fixed',
  'current',
  'fixed',
  'fixed',
  'fixed',
  'current',
  'fixed']

Не могли бы вы написать свои предложения / ответы по нему?.

Ответы [ 3 ]

1 голос
/ 25 мая 2020

Вот один способ:

for key in cond_dict:
        for k in ex_dict:
            if k == key:
                for ke in cond_dict[k]:
                    if ex_dict[k]:
                        a = ex_dict[k]
                        a.append('RARE')
                        ex_dict.update({k:a})
print(ex_dict)
1 голос
/ 25 мая 2020

Хотя на это уже есть ответы, я опубликовал то же самое, потому что пробовал. Надеюсь, это поможет и имеет значение.

for i, v in ex_dict.items():            # loop through ex_dict
    check_list = cond_dict[i].keys()    # create a check_list to verify the values later
    for p, k in enumerate(v):           # loop through the values of ex_dict
        if k not in check_list:         # match each value with check_list
            v[p] = 'RARE'               # replace the unmatched value

print(ex_dict)                          # print result

Если вы хотите, чтобы это было более pythoni c, вот решение:

1 голос
/ 25 мая 2020
for k,v in ex_dict.items():
    ex_dict[k] = [item if item in cond_dict[k] else 'RARE' for item in v]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...