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

How can I obtain a value in a list of dictionaries based on another value of that same dictionary?

我有以下词典:

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

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

我正在尝试这样的事情:

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

抱歉,我没有包含更多示例,但我对处理字典还很陌生,不确定还能尝试什么。

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

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

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

使用此代码

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

您的代码有效。只需将这一行中的“=”替换为“==”即可:

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

如果您只需要查找一次,那么您提供的迭代逻辑就可以了。可以在此处应用一种优化 -

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

希望对您有所帮助。