我有这个清单:
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)的值,以便自动显示?
有人可以建议,如何解决这个问题?
感谢。
答案 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>