Как добавить значения к ключам в словаре Python на основе строк данных с повторяющимися парами ключ-значение - PullRequest
0 голосов
/ 09 ноября 2018

У меня есть данные электронной торговли со строками пар ключ-значение, например:

row1: "ideal for":"women", "color":"blue"
row2: "ideal for": "women", "color":"red"
row3: "ideal for": "men", "color":"blue"

Мне нужно создать новый словарь, который будет включать ключи и массивы соответствующих значений, например ::1004*

{"ideal for": ["women","men"], "color": ["red", "blue"]}

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

df.apply(lambda row: prep_text(row['product_specifications']), axis=1)
tag_info = df['product_specifications']
tag_info.replace('', np.nan, inplace=True)
tag_info.dropna(inplace=True)
tags_dict = dict()
for row in tag_info:
     for key, value in row.items():
         if key not in tags_dict:
             tags_dict[key] = [value]
         elif value not in tags_dict.values():
             tags_dict[key].append(value)

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

{"ideal for": ["women","women","men"], "color":["blue", "red", "blue"]}

Что мне нужно сделать, чтобы значения не повторялись?

1 Ответ

0 голосов
/ 09 ноября 2018

Элементами tags_dict.values ​​() являются Списки строк, а не строк. Вы должны проверить

 elif value not in tags_dict[key]:
     tags_dict[key].append(value)

Или вы можете использовать Установить вместо Список в качестве значений для tags_dict. Set может включать только одну копию каждого значения, поэтому, если вы добавите вторую копию того же значения, она просто проигнорирует ее. Но значения в Set неупорядочены.

  if key not in tags_dict:
      tags_dict[key] = {value}
  else:
      tags_dict[key].add(value)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...