Удалите дубликаты словарей из списка словарей в python

#python #json

Вопрос:

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

Входные Данные

 dct = {'Customer_Number': 90617174,   'Phone_Number': [{'Phone_Type': 'Mobile', 'Phone': [12177218280.0]},   {'Phone_Type': 'Mobile', 'Phone': [12177218280.0]}],  'Email': [{'Email_Type': 'Primary',   'Email': ['saman.zonouz@rutgers.edu']},  {'Email_Type': 'Primary',   'Email': ['saman.zonouz@rutgers.edu']}]  }  

Ожидаемый Результат:

 {'Customer_Number': 90617174,   'Email': [{'Email_Type': 'Primary',   'Email': ['saman.zonouz@rutgers.edu']}],   'Phone_Number': [{'Phone_Type': 'Mobile',   'Phone': [12177218280]}]}    **Code tried:**   res_list = []  for key,value in address_dic.items():  if isinstance(value,list):  for i in range(len(value)):  if value[i] not in value[i   1:]:  res_list.append(value[i])    dic.append((res_list))   **Output Getting**   type: [[{'Email_Type': 'Primary', 'Email': ['saman.zonouz@rutgers.edu']}, {'Email_Type': 'alternate', 'Email': ['samance@gmail.com', 'saman.zonouz@rutgers.edu']}], [], [{'Phone_Type': 'Mobile', 'Phone': [12177218280.0]}, {'Phone_Type': 'work', 'Phone': [nan]}, {'Phone_Type': 'home', 'Phone': [2177218280.0]}], []]  

Ответ №1:

Напишите функцию для дедупликации списков:

 def dedupe_list(lst):  result = []  for el in lst:  if el not in result:  result.append(el)  return result  def dedupe_dict_values(dct):  result = {}  for key in dct:  if type(dct[key]) is list:  result[key] = dedupe_list(dct[key])  else:  result[key] = dct[key]  return result  

Проверьте это:

 deduped_dict = {'Customer_Number': 90617174,   'Email': [{'Email_Type': 'Primary',   'Email': ['saman.zonouz@rutgers.edu']}],   'Phone_Number': [{'Phone_Type': 'Mobile',   'Phone': [12177218280]}]}   dedupe_dict_values(dct) == deduped_dict ## Out[12]: True   

Комментарии:

1. Что такое dedupeddict ?? получаю ошибку. Я не мог видеть, используем ли мы где-нибудь

2. @NaveenGupta это было в твоем объяснении. Я вставил его снова.