2017-04-04 18 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')