[Tutor] Remove duplicate values from dictionary without removing key
Umar Draz
unix.co at gmail.com
Fri Jan 8 09:18:48 EST 2021
Hi Alan
I have changed the function and now it is working as I want
*def** remove_duplicate_values*(dict_list):
seen = {}
*for* key *in* dict_list[0].keys():
seen[key] = []
*for* dic *in* dict_list:
*for* field,value *in* dic.items():
*if* field == *'client'*:
*if* value *in* seen[field]:
dic[field] = ""
*else*: seen[field].append(value)
*return* dict_list
Thanks for your help
On Fri, Jan 8, 2021 at 7:03 PM Umar Draz <unix.co at gmail.com> wrote:
> Hi Alan
>
> The function you gave me worked but it has a little issue, here is the code
>
> from pprint import pprint
>
>
> def remove_duplicate_values(dict_list):
>
> seen = {}
>
> for key in dict_list[0].keys():
>
> seen[key] = []
>
>
> for dic in dict_list:
>
> for field,value in dic.items():
>
> if value in seen[field]:
>
> dic[field] = ""
>
> else: seen[field].append(value)
>
> return dict_list
>
>
> items = [
>
> {'client': 'xyz', 'name': "Ilir Meta", 'rating': 0.06, 'total': 100},
>
> {'client': 'xyz','name': "Abdelmadjid Tebboune", 'rating': 4.0,
> 'total': 100},
>
> {'client': 'xyz','name': "Alexander Lukashenko", 'rating': 3.1,
> 'total': 100},
>
> {'client': 'xyz', 'name': "Miguel Díaz-Canel", 'rating': 0.32,
> 'total': 100},
>
> {'client': 'udz', 'name': "Ilir Meta", 'rating': 0.06, 'total': 150},
>
> {'client': 'udz','name': "Abdelmadjid Tebboune", 'rating': 4.0,
> 'total': 150},
>
> {'client': 'udz','name': "Alexander Lukashenko", 'rating': 3.1,
> 'total': 150},
>
> {'client': 'udz', 'name': "Miguel Díaz-Canel", 'rating': 0.32,
> 'total': 150},
>
> ]
>
>
> items = remove_duplicate_values(items)
>
>
> pprint(items)
>
>
>
> Here is the output
>
>
> [{'client': 'xyz', 'name': 'Ilir Meta', 'rating': 0.06, 'total': 100},
>
> {'client': '', 'name': 'Abdelmadjid Tebboune', 'rating': 4.0, 'total':
> ''},
>
> {'client': '', 'name': 'Alexander Lukashenko', 'rating': 3.1, 'total':
> ''},
>
> {'client': '', 'name': 'Miguel Díaz-Canel', 'rating': 0.32, 'total': ''},
>
> {'client': 'udz', 'name': '', 'rating': '', 'total': '150'},
>
> {'client': '', 'name': '', 'rating': '', 'total': ''},
>
> {'client': '', 'name': '', 'rating': '', 'total': ''},
>
> {'client': '', 'name': '', 'rating': '', 'total': ''}]
>
>
>
> You can see the name and rating values also marked empty for client (udz),
> now is it possible that the function only check client key
>
>
>
> On Fri, Jan 8, 2021 at 6:51 PM Alan Gauld via Tutor <tutor at python.org>
> wrote:
>
>> On 08/01/2021 13:25, Alan Gauld via Tutor wrote:
>>
>> > OK, Lets take it one bit at a time.
>>
>> To summarize and make it easier to use in your existing code I;ll turn
>> it into a function:
>>
>> def remove_duplicate_values(dict_list):
>> seen = {}
>> for key in dict_list[0].keys():
>> seen[key] = []
>>
>> for dic in dict_list:
>> for field,value in dic.items():
>> if value in seen[field]:
>> dic[field] = ""
>> else: seen[field].append(value)
>> return dict_list
>>
>> Call it with:
>>
>> items = remove_duplicate_values(items)
>>
>>
>> That function should work for any list of similar dictionaries.
>> But again untested!
>>
>> --
>> Alan G
>> Author of the Learn to Program web site
>> http://www.alan-g.me.uk/
>> http://www.amazon.com/author/alan_gauld
>> Follow my photo-blog on Flickr at:
>> http://www.flickr.com/photos/alangauldphotos
>>
>>
>> _______________________________________________
>> Tutor maillist - Tutor at python.org
>> To unsubscribe or change subscription options:
>> https://mail.python.org/mailman/listinfo/tutor
>>
>
>
> --
> Umar Draz
>
--
Umar Draz
More information about the Tutor
mailing list