如何从列表中访问相同键的多个词典值?

时间:2018-01-28 22:42:52

标签: python list dictionary

我有这个清单:

f = ['a','b','c',['me','you','him/her'],
     {'apples':430,'peaches':239,'bananas':839},
     {'apples':123,'peaches':345,'bananas':536}]

我知道如果我使用切片,我可以访问此列表中的每个项目。例如,要访问第一个字典,我会做

print(f[4]) #---> {'apples': 430, 'peaches': 239, 'bananas': 839}

要访问字典中的键值,我会这样做:

print(f[4]['apples']) #---> 430

我的问题是如何在这两个单独的词典中访问两个苹果键(430,123)的值,以便自动显示?

有人可以建议,如何解决这个问题?

感谢。

2 个答案:

答案 0 :(得分:0)

如果我理解正确,您想要检索列表中多个词典的值。这可以通过使用列表推导来迭代列表并检索由键指定的值来完成,前提是列表元素是字典。

下面是一个lambda函数,它可以在你的列表中运行,并将'apples'中存储的值作为列表返回。

finder = lambda l, string: [x[string] for x in l if type(x) == dict]

print(finder(f, 'apples')) # [430, 123]
print(finder(f, 'peaches')) # [239, 345]

答案 1 :(得分:0)

您可以使用列表推导来执行此操作。

请注意,如果没有if语句,如果KeyError没有“apples”键,您将获得dict,如果TypeError中有项目,则会dict列表不是>>> f = ['a','b','c',['me','you','him/her'], ... {'apples':430,'peaches':239,'bananas':839}, ... {'apples':123,'peaches':345,'bananas':536}] >>> [item['apples'] for item in f if isinstance(item, dict) and 'apples' in item] [430, 123]

(venv) <username> <directory> <commands>