#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 это было в твоем объяснении. Я вставил его снова.