我有 json 回复:
{
"data": [
{
"id": "1",
"name": "Tom",
"age": "24",
},
{
"id": "2",
"name": "Nick",
"age": "45",
},
{
"id": "3",
"name": "Harry",
"age": "18",
},
{
"id": "1",
"name": "Tom",
"age": "29",
}
],
"count": 4
}
我希望输出是这样的:
output[
{
"id": "1",
"name": "Tom",
"age": "24",
},
{
"id": "2",
"name": "Nick",
"age": "45",
},
{
"id": "3",
"name": "Harry",
"age": "18",
}
]
我想要的是获取具有唯一名称的所有字典对象。
我知道如何获取唯一名称,但我也希望获取id
和age
。
有两个与name
Tom
对应的字典对象。我想在我的输出中保留一个。
这是获取单序列的工作代码:
size=len(data["data"])
uniqueNames = [];
for i in range(0,size,1):
if(data["data"][i]["name"] not in uniqueNames):
uniqueNames.append(data["data"][i]["name"]);
print uniqueNames
答案 0 :(得分:2)
以下是修复代码的方法:只需保留名称注册表,然后添加算法以保留其余信息。对我来说,我创建了另一个数组,用于存储具有唯一名称的整个数据对象,称为returnValue。只要有唯一的名称,它就会将整个数据对象推送到returnValue。然后,它将其打印出来(或者如果你把它变成一个函数则返回它)。
returnValue = []
badValues = []
size=len(data["data"])
uniqueNames = []
for i in range(0,size,1):
if(data["data"][i]["name"] not in uniqueNames):
uniqueNames.append(data["data"][i]["name"])
returnValue.append(data["data"][i])
else:
badValues.append(data["data"][i])
print "Good ones: "
print returnValue
print "Bad ones: "
print badValues
由于作者的问题:
{{1}}
答案 1 :(得分:2)
你走了,
import json
jsonFile = open('aa.json', 'r')
data = json.load(jsonFile)
size=len(data["data"])
print size
values = [];
uniqueNames = [];
for i in data["data"]:
if(i["name"] not in uniqueNames):
uniqueNames.append(i["name"]);
values.append(i)
jsonFile.close()