python-从json对象中选择唯一键值

时间:2017-03-10 05:03:09

标签: python json

我有 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",
}
]

我想要的是获取具有唯一名称的所有字典对象。 我知道如何获取唯一名称,但我也希望获取idage。 有两个与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

2 个答案:

答案 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()