2015-07-10 70 views
2

我有如下所示的JSON文件。我對編程非常陌生,經過大量的試驗和錯誤之後,我能夠通過文件中的索引來訪問各個鍵值,如下面的代碼所示。我希望能夠通過多個對象按鍵搜索。例如,我想通過關鍵「vedette」進行搜索並返回「法語學院」,「Quai conti」,「Institut」,「Les quarante」。任何有關如何做到這一點的建議都會很棒。訪問json鍵值,用python鍵值索引

with open('DESformatted.json') as data_file:  
    d = json.load(data_file) 
pprint (d['DES'][0]['vedette']) 

[u'Acad\xe9mie fran\xe7aise'] 

{ 
    "DES": [ 
     { 
      "vedette": ["Académie française"], 
      "synonymes": [ 
       "Institut", 
       "Quai Conti", 
       "les Quarante" 
      ], 
      "liste10": [ 
       "Institut", 
       "66", 
       "Quai Conti", 
       "66", 
       "les Quarante", 
       "66" 
      ], 
      "cliques": [ 
       [ 
        "Académie française", 
        "Institut" 
       ], 
       [ 
        "Académie française", 
        "Quai Conti" 
       ], 
       [ 
        "Académie française", 
        "les Quarante" 
       ] 
      ] 
     }, 
     { 
      "vedette": ["Quai Conti"], 
      "synonymes": [ 
       "Académie française" 
      ], 
      "liste10": [ 
       "Académie française", 
       "200" 
      ], 
      "cliques": [ 
       [ 
        "Académie française", 
        "Quai Conti" 
       ] 
      ] 
     }, 
     { 
      "vedette": ["les Quarante"], 
      "synonymes": [ 
       "Académie française" 
      ], 
      "liste10": [ 
       "Académie française", 
       "200" 
      ], 
      "cliques": [ 
       [ 
        "Académie française", 
        "les Quarante" 
       ] 
      ] 
     }, 
     { 
      "vedette": ["Institut"], 
      "synonymes": [ 
       "Académie française", 
       "académie" 
      ], 
      "liste10": [ 
       "Académie française", 
       "100", 
       "académie", 
       "100" 
      ], 
      "cliques": [ 
       [ 
        "Académie française", 
        "Institut" 
       ], 
       [ 
        "Institut", 
        "académie" 
       ] 
      ] 
     } 
    ] 
} 
+0

「*我對編程非常陌生*」 - 我可以建議您暫停您正在編寫的任何內容並閱讀[The Python Tutorial](https://docs.python.org/2/教程/ index.html的)?現在花時間爲你節省時間和挫折。 –

回答

0

"DES"關聯的值是對象的列表,這樣你就可以遍歷雖然他們是這樣的:

for obj in d["DES"]: 
    print(obj["vedette"]) 

輸出:

['Acad\xe9mie fran\xe7aise'] 
['Quai Conti'] 
['les Quarante'] 
['Institut'] 
0

你可以這樣做:

>>> vedettes = [] 

>>> for x in d['DES']: 
    vedettes += x['vedette'] 

>>> vedettes 
['Acad\xc3\xa9mie fran\xc3\xa7aise', 'Quai Conti', 'les Quarante', 'Institut'] 

在這裏,我正在遍歷DES字典的所有值d的鍵值。然後,我將從每次迭代獲得的vedette的值存儲到vedettes列表中。通過添加獲得的vedette列表和vedettes列表以使得在每個步驟中獲得的vedette列表的所有元素被添加到最終的vedettes列表中。

vedettes列表包含您所需的輸出。

0

作爲其他人出席的正確for循環的替代方案,您可以使用list comprehension

>>> import json 
>>> d = json.load(open('DESformatted.json')) 
>>> [x['vedette'] for x in d['DES']] 
[[u'Acad\xe9mie fran\xe7aise'], [u'Quai Conti'], [u'les Quarante'], [u'Institut']] 
>>>