Tenir compte de cette courte liste python de dictionnaires (premier élément dictionnaire est une chaîne, deuxième élément est un objet Widget):Nécessité de supprimer les doublons dans une liste de dictionnaires et de modifier les données pour le double restant (python)
raw_results =
[{'src': 'tag', 'widget': <Widget: to complete a form today>}, # dupe 1a
{'src': 'tag', 'widget': <Widget: a newspaper>}, # dupe 2a
{'src': 'zip', 'widget': <Widget: to complete a form today>}, # dupe 1b
{'src': 'zip', 'widget': <Widget: the new Jack Johnson album>},
{'src': 'zip', 'widget': <Widget: a newspaper>}, # dupe 2b
{'src': 'zip', 'widget': <Widget: premium dog food >}]
Je veux passer par cette liste et supprimer les doublons qui cette question SO répondues pour moi:
Remove duplicates in a list while keeping its order (Python)
known_widgets= set()
processed_results = []
for x in raw_results:
widget = x['widget']
if widget in known_widgets:
continue
else:
processed_results.append(x)
known_widgets.add(widget)
Cependant, après Je supprime la ligne en double (par ex. dupe 1b), je veux changer les données "src" du doublon restant (par exemple dupe 1a). Je voudrais ajouter les doublons supprimés "src" à l'original. Voilà ce que je voudrais terminer par:
processed_results =
[{'src': 'tag-zip', 'widget': <Widget: to complete a form today>}, # dupe 1a
{'src': 'tag-zip', 'widget': <Widget: a newspaper>}, # dupe 2a
{'src': 'zip', 'widget': <Widget: the new Jack Johnson album>},
{'src': 'zip', 'widget': <Widget: premium dog food >}]
Je suis sûr que cela est facile à faire, mais ma tête tourne après trop de café et de nombreuses heures encerclant ce problème. J'aimerais et apprécie vraiment l'aide d'un expert. Je vous remercie!
Vous ne supprimez pas les doublons, vous les fusionnez. Droite? –
Oui, je suppose que c'est plus précis puisque je fusionne les deux champs 'src' des doublons. – mitchf
Vous fusionnez sur src - regroupant tous les src = 'tag-zip' dans un groupe, tous src = 'zip' dans un autre groupe? – hughdbrown