如何根据同一个字典的另一个值在字典列表中获取值?

时间:2017-05-08 18:00:37

标签: python dictionary key-value

我有以下词典:

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

如果密钥42.55的值为market,我想知道是否有可能获得值apples

我正在尝试这样的事情:

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

很抱歉,我没有提供更多示例,但我对处理词典并不确定还有什么可以尝试。

4 个答案:

答案 0 :(得分:2)

在您的示例中d是您要查找的词典:

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

并使用等于运算符(==)而不是赋值(=

答案 1 :(得分: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'])

答案 2 :(得分:0)

您的代码有效。只需在此行中将“=”替换为“==”:

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

答案 3 :(得分: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} 再假设一个市场只有一个勇气。

另一方面,如果每个市场都有很多价值,你可以迭代一次并创建一个类似的结构 {'apples' : [42.55, 99.99], 'oranges': [104.58, 99.22]}

希望它有所帮助。