私は辞書のリストを持っているとしましょう:
list = [{'name':'john','age':'28','location':'hawaii','gender':'male'},
{'name':'john','age':'32','location':'colorado','gender':'male'},
{'name':'john','age':'32','location':'colorado','gender':'male'},
{'name':'parker','age':'24','location':'new york','gender':'male'}]
この辞書では、「名前」は一意の識別子と見なすことができます。私の目標は、このリストを同一の辞書 (つまり、リスト [1] とリスト [2]) に対して重複除去するだけでなく、単一の「名前」 (つまり、リスト [0] とリスト [1/2] に対して異なる値をマージ/追加することです。 ]. つまり、次のように、私の例のすべての 'name'='john' dict を 1 つの dict にマージしたいと思います。
dedup_list = [{'name':'john','age':'28; 32','location':'hawaii; colorado','gender':'male'},
{'name':'parker','age':'24','location':'new york','gender':'male'} ]
これまで、2 番目のリストである dedup_list を作成し、最初のリストを繰り返し処理しようとしました。dedup_list の dicts の 1 つに「name」キーがまだ存在しない場合は、追加します。行き詰まっているのは合流部分です。
for dict in list:
for new_dict in dedup_list:
if dict['name'] in new_dict:
# MERGE OTHER DICT FIELDS HERE
else:
dedup_list.append(dict) # This will create duplicate values as it iterates through each row of the dedup_list. I can throw them in a set later to remove?
私の辞書のリストには 100 を超えるアイテムが含まれることはないため、O(n^2) ソリューションは間違いなく受け入れられますが、必ずしも理想的ではありません。この dedup_list は最終的に CSV に書き込まれるので、それに関する解決策があれば、私はすべて耳にします。
ありがとう!