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']}]