2017-07-31 91 views
-8

我有JSON:最快速的方法找到JSON(Python)的元素

[ 
{ 
    "name":"Apple", 
    "price":2, 
    "have":0, 
    "max":36 
}, 
{ 
    "name":"Pineapple", 
    "price":5, 
    "have":6, 
    "max":17 
} 
] 

我需要最快的功能,接收的名字,並把價格。例如打印(jsonname(「Apple」))爲2.

P.S.請不要張貼Loop回答,我知道他們。我需要快速的方法和方法

+3

你有什麼企圖到目前爲止請發表您的代碼 – James

+0

否,方法,我知道是慢?。所以我需要最快的方法 –

+2

@NurislomTuraev看起來像你沒有嘗試任何東西 –

回答

7

這裏有一個簡單的方法來做到這一點的名字:

def function(json_object, name): 
    for dict in json_object: 
     if dict['name'] == name: 
      return dict['price'] 

如果你確信沒有重複的名字,更有效的(和Python的的方式做它是使用列表理解:

def function(json_object, name): 
     return [obj for obj in json_object if obj['name']==name][0]['price'] 
+0

列表解析總是比Python中的for循環更快。如果你願意,你可以閱讀更多的話題。 – Y2H

+0

@ Y2H列表理解總是乾淨,快速和一個班輪。好答案 –

4
from json import loads 

json = """[ 
{ 
    "name":"Apple", 
    "price":2, 
    "have":0, 
    "max":36 
}, 
{ 
    "name":"Pineapple", 
    "price":5, 
    "have":6, 
    "max":17 
} 
]""" 

parsedJson = loads (json) 

def jsonname (name): 
    for entry in parsedJson: 
     if name == entry ['name']: 
      return entry ['price'] 
相關問題