如何合并 python 中在特定键中具有相同值的字典列表?



Turn this json

[{"field": "DDC", "values": "["000"]"}, {"field": "DDC", "values": "["200"]"}, {"field": "DDC", "values": "["900"]"}, {"field": "learningResourceType", "values": "["journal"]"}, {"field": "inLanguage", "values": "["eng"]"}, {"field": "type", "values": "["text"]"}]

进入以下 JSON

[{"field": "DDC", "values": "["000" , "200", "900"]"}, {"field": "learningResourceType", "values": "["journal"]"}, {"field": "inLanguage", "values": "["eng"]"}, {"field": "type", "values": "["text"]"}]

你可以试试这个。

import ast
a=[{"field": "DDC", "values": "["000"]"}, {"field": "DDC", "values": "["200"]"}, {"field": "DDC", "values": "["900"]"}, {"field": "learningResourceType", "values": "["journal"]"}, {"field": "inLanguage", "values": "["eng"]"}, {"field": "type", "values": "["text"]"}]
d=set()
for i in a:
d.add(i['field'])
#d={'DDC', 'type', 'learningResourceType', 'inLanguage'}
fin=[]
out={}
for key in d:
for dic in a:
if key==dic['field']:
out['field']=key
out.setdefault('values',[])
out['values']+=ast.literal_eval(dic.setdefault('values',[]))
fin.append(out)
out={}
for i in fin: #fin=[{'field': 'DDC', 'values': ['000', '200', '900']}, {'field': 'type', 'values': ['text']}, {'field': 'learningResourceType', 'values': ['journal']}, {'field': 'inLanguage', 'values': ['eng']}]
print(i)

输出

{'field': 'DDC', 'values': ['000', '200', '900']}
{'field': 'type', 'values': ['text']}
{'field': 'learningResourceType', 'values': ['journal']}
{'field': 'inLanguage', 'values': ['eng']}

检查这个:

import ast
new = []
unique_fields = set()
for x in a:
unique_fields.add(x['field'])
for x in unique_fields:
temp = {}
temp['field']=x
lt = []
for y in a:
if(y['field']==x):
lt.append(ast.literal_eval(y['values'])[0])
temp['values'] = lt
new.append(temp)
print(new)

输出:

[{'field': 'DDC', 'values': ['000', '200', '900']}, {'field': 'inLanguage', 'values': ['eng']}, {'field': 'type', 'values': ['text']}, {'field': 'learningResourceType', 'values': ['journal']}]

最新更新