2017-07-31 4 views
-8

を見つけるための最速の方法私はJSONを持っている:JSONの要素(パイソン)

[ 
{ 
    "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'] 

あなたは名前が重複しないことが確実な場合は、行うには、より効果的な(と神託方法あなたがこれまでに試みられてきた何

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

リスト内包は、Pythonのforループよりも常に速いです。あなたが望むなら、あなたはそのトピックについてもっと読むことができます。 – Y2H

+0

@ Y2Hリスト内包は常にきれいで、速く、1つのライナーです。いい答えだ –

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'] 
関連する問題