我在集合中有一堆页面对象。 每个页面都有一些元信息。 有些页面有一个名为tag的元组,它是一个标签列表。
如何选择具有元标记属性且该标记包含特定值的网页?
我在考虑一些事情:
articles = [p for p in pages
and 'tags' in p.meta
and tag in p.meta.tags]
(此代码无效AttributeError: 'dict' object has no attribute 'tags'
。)
答案 0 :(得分:6)
如果p.meta
是包含'tags'
密钥的字典,您可以使用p.meta['tags']
或p.meta.get('tags')
执行查找,而不是p.meta.tags
。所以最后你的理解可能是这样的:
articles = [p for p in pages
if 'tags' in p.meta
and tag in p.meta['tags']]
答案 1 :(得分:4)
将第一个and
更改为if
,并使用方括号来访问dict项目。
articles = [p for p in pages
if 'tags' in p.meta and tag in p.meta['tags']]
或者,您可以假装缺少tags
密钥是空列表。
articles = [p for p in pages
if tag in p.meta.get('tags', [])]
答案 2 :(得分:0)
假设tag
不是None
,我会这样做:
articles = [p for p in pages
if tag in p.meta.get('tags')]