2017-05-08 9 views
0

は、私には、以下の辞書を持っている:キーmarketの値が​​ある場合は、値42.55を取得することが可能である場合、私は知りたいのですが 同じ辞書の別の値に基づいて辞書のリストの値を取得するにはどうすればよいですか?

inicio=[  
{"market":"oranges", "Valor":104.58}, 
{"market":"apples","Valor":42.55} 
] 

。私は別の例が含まれていないことを

for d in inicio: 
    if key['market']='apples': 
     print(d['Valor']) 

申し訳ありませんが、私は辞書と試して他に何かわからないに対処するにはかなり新しいです:

私はこのような何かをしようとしていました。あなたの例d

+0

あなたは 'd '[market'] == 'apples''が必要です。なぜ' key'が定義された名前であるとお考えですか?あなたのコードのどこかに 'キー 'がないかぎり? –

+0

なぜあなたはそのような辞書を持っていますか? '{'りんご':{'Valor':42.55}、 'oranges':{'Valor':104.58}}のような辞書を持つ方が良いのではないでしょうか?それでは、反復なしで 'inicio ['apples'] ['Valor']'を使うことができます。 – MSeifert

答えて

2

は、あなたが探している辞書です:

for d in inicio: 
    if d['market']=='apples': 
     print(d['Valor']) 

と使用等価演算子(==)の代わりに、割り当て(=

0

使用このコード

inicio=[  
{"market":"oranges", "Valor":104.58}, 
{"market":"apples","Valor":42.55} 
] 

print inicio[1]['Valor'] 

市場と同じリンゴの商品がたくさんある場合は、リストを繰り返して、そのキーがリンゴに等しいかどうかを確認してから、 e。 このコードを確認してください。

for dictionary in inicio: 
    if dictionary['market'] == 'apples': 
     print(dictionary['Valor']) 
0

コードが機能します。ただ、この行に「==」と「=」を置き換える:

if d['market'] =='apples': 
+0

そして 'key'を' d'に変更します... –

0

あなたは一度だけのルックアップが必要な場合は、あなたが提供した反復ロジックは大丈夫です。最適化の1つは、ここで適用することができます -

for d in inicio: 
    if d['market']=='apples': 
     print(d['Valor']) 
     break # assuming you only need 1 value 

しかし、あなたが再びこのロジックを再実行する必要がある場合、私はあなたが一度反復と値のマッピングを作成することができます示唆しています。

最終的に結果は{'apples' : 42.55, 'oranges': 104.58}のようになります。
再び、1つの市場に対して1つの勇気しかないと仮定します。各市場には多くのvalorsがある一方、あなたは {'apples' : [42.55, 99.99], 'oranges': [104.58, 99.22]}

のように一度、クレート構造を繰り返すことができ

はそれがお役に立てば幸いです。

関連する問題