2017-05-08 65 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]}

希望它能帮助。

相关问题