从嵌套字典中删除重复项

时间:2019-07-29 04:14:42

标签: python dictionary

I have a dictionary as follows:

   data =` {0: {'all_claims': {'claim_id': 'FL113120719',
   'state': 'FL',
   'status': 'open',
   'status_in_progress': False},
  1: None,
  'fl_claims': {'reporting_company': 'CHARLES SCHWAB & CO INC',
   'property_type': 'OTHER O/S OFFICIAL CHECKS',
   'amount': 0.11,
   'claim_id': 'FL113120719'},
  'fl_claim_people': {'first_name': ['AMANDA', 'LAURA'],
   'last_name': ['GUYATT', 'GUYATT'],
   'middle_name': ['JEAN', None],
   'street_address': ['2581 COUNTRYSIDE BLVD. # 2213',
    '2581 COUNTRYSIDE BLVD. # 2213'],
   'city': ['CLEARWATER', 'CLEARWATER'],
   'state': ['FL', 'FL'],
   'zip_code': ['33761', '33761'],
   'county': [None, None],
   'zip_code_suffix': [None, None],
   'latitude': [None, None],
   'longitude': [None, None],
   'latlong_c_score': [None, None],
   'claim_id': ['FL113120719', 'FL113120719']}}}`

现在,我必须从嵌套字典内的列表中删除重复值。另外,该函数应该是递归的,并且应该传递两个参数,例如:

remove_duplicates(dict , 'street_address')


def remove_duplicate(duplicate_values_dict, dict_keys):
    for key, value in duplicate_values_dict.items():
        if key in dict_keys:
            duplicate_values_dict[key] = set(value)
     return duplicate_values_dict

Here, I am unable to pass tuple of key, as in the question.

该函数应从指定键中删除重复的值,并将其附加到新字典中。

我该如何解决问题?

1 个答案:

答案 0 :(得分:0)

您共享的数据包含嵌套字典,因此我创建了一个递归函数:

def remove_duplicate(duplicate_values_dict, dict_keys):
    if dict_keys in duplicate_values_dict.keys():
        print(duplicate_values_dict[dict_keys])
        duplicate_values_dict[dict_keys] = list(set(duplicate_values_dict[dict_keys]))
    for key, value in duplicate_values_dict.items():
        if isinstance(value, dict):
            remove_duplicate(value,dict_keys)

您可以使用字典和按键来调用此函数:

remove_duplicate(data,'last_name')

键“ last_name”最初包含重复项:['GUYATT','GUYATT']。调用remove_duplicate(data,'last_name')之后,您会发现您的'data'仅包含键'last_name'的['GUYATT']

相关问题