2017-05-08 45 views
0

我有以下字典:如何根據同一字典的另一個值獲取字典列表中的值?

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

我想知道是否有可能獲得價值42.55如果關鍵market的值是​​。

我是想這樣的事情:

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

對不起,我不包括進一步的例子,但我很新進入處理詞典,不知道什麼嘗試。

+0

您需要'if d ['market'] =='apples'' ....您爲什麼期望'key'是一個已定義的名稱?除非你的代碼中有一個'key'? –

+0

爲什麼你有這樣的字典?像'{'蘋果''這樣的詞典不是更好:{'Valor':42.55},'oranges':{'Valor':104.58}}'?然後你可以使用'inicio ['apples'] ['Valor']'不用迭代。 – MSeifert

回答

2

在您的例子d就是你要找的詞典:

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'] 

如果您有許多與市場相同的產品,然後遍歷列表並檢查關鍵字是否等於蘋果,然後檢查價值即 檢查此代碼。

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

您的代碼有效。只是在這條線代替「=」,「==」:

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

並將'key'更改爲'd' ... –

0

如果你需要查找只有一次,那麼你所提供的迭代邏輯是好的。一個優化可以應用在這裏 -

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

不過,如果你需要再次運行這個邏輯,我建議你可以遍歷一次創造價值的映射。

最終結果可能變得像{'apples' : 42.55, 'oranges': 104.58}
再次假設只有一個市場的勇氣。

在另一方面,如果有很多valors每個市場,你可以一次迭代和包裝箱的結構像 {'apples' : [42.55, 99.99], 'oranges': [104.58, 99.22]}

希望它能幫助。

相關問題