2017-04-04 17 views
1

假设我有过一个对象:如何通过json转换为列表来排序?

[ 
    { 
    "id": 2, 
    "name": "cat" 
    }, 
    { 
    "id": 6, 
    "name": "dog" 
    }, 
    { 
    "id": 8, 
    "name": "horse" 
    }, 
    { 
    "id": 10, 
    "name": "turtle" 
    } 
] 

我希望写的,可以采取一个输入ID,并告诉我相关的名称的功能。 如果animal_list被分配了该列表,我将如何查找哪个动物与6相关联? animal_list [ID == 6]?

+2

我建议转换为用'id'键入一个'dict',所以你可以做'complete_dict [6]'(并且在'O(1)'时间获得答案,而不是线性的'O(n)'时间)。 – ShadowRanger

回答

0

这将是最好的,如果你可以在列表转换成字典作为@ShadowRanger说,但如果你不能,你可以使用列表内涵与if语句是这样的:

my_list = [ 
    { 
    "id": 2, 
    "name": "cat" 
    }, 
    { 
    "id": 6, 
    "name": "dog" 
    }, 
    { 
    "id": 8, 
    "name": "horse" 
    }, 
    { 
    "id": 10, 
    "name": "turtle" 
    } 
] 

def get_by_id(the_list, id): 
    found = [dict for dict in the_list if dict['id'] == id] 
    if found: 
     return found[0] 
    return None 

print(get_by_id(my_list, 6)) 

# will output: {'id': 6, 'name': 'dog'} 
0

animal_list是你给你的问题列表

animal_list = [ 
     { 
     "id": 2, 
     "name": "cat" 
     }, 
     { 
     "id": 6, 
     "name": "dog" 
     }, 
     { 
     "id": 8, 
     "name": "horse" 
     }, 
     { 
     "id": 10, 
     "name": "turtle" 
     } 
    ] 
def get_animal(id): 
    found = 0 
    for i in animal_list: 
     if animal_list[i]["id"] == id : 
      found = 1 
      print animal_list[i]["name"] 
    if found == 0: 
      print "animal not found" 
0

你可以导入你的数据作为JSON和使用字典结构使用它。

我创建了一个函数,如果有一个有效的键,将返回动物名称;如果键不存在,则返回none。


代码:

s = '[{"id": 2,"name": "cat"},{"id": 6,"name": "dog"},{"id": 8,"name": "horse"},{"id": 10,"name": "turtle"}]' 

def search_animal(s, num): 
    import json  
    data = json.loads(s) 
    for d in data: 
     if d['id'] == num: 
      print(d['name']) 

search_animal(s, 2) 
search_animal(s, 6) 

输出:

cat 
dog 
0
list = [ 
    { 
    "id": 2, 
    "name": "cat" 
    }, 
    { 
    "id": 6, 
    "name": "dog" 
    }, 
    { 
    "id": 8, 
    "name": "horse" 
    }, 
    { 
    "id": 10, 
    "name": "turtle" 
    } 
] 


id = input("Enter ID..! ") 

for data in list: 
    if data.get('id') == id: 
     print data.get('name')