这是dict:
a = {u'jQuery': {'categories': [u'javascript-frameworks']},
u'Twitter Bootstrap': {'categories': [u'web-frameworks']},
u'WooCommerce': {'categories': [u'ecommerce']},
u'mod_ssl': {'categories': [u'web-server-extensions']},
u'Font Awesome': {'categories': [u'font-scripts']},
u'Modernizr': {'categories': [u'javascript-frameworks']},
u'OpenSSL': {'categories': [u'web-server-extensions']},
u'AddThis': {'categories': [u'widgets']},
u'UNIX': {'categories': [u'operating-systems']},
u'Gravatar': {'categories': [u'miscellaneous']},
u'Google Font API': {'categories': [u'font-scripts']},
u'Apache': {'categories': [u'web-servers']},
u'WordPress': {'categories': [u'cms', u'blogs']},
u'PHP': {'categories': [u'programming-languages']}}
如果“cms”和“电子商务”都存在于整个词典中,我需要得到真实。
我试过这种方式:
for key, value in a.items():
if 'cms' in value['categories'] and 'ecommerce' in value['categories']:
print 'lala'
和
for key, value in a.items():
if 'cms' and 'ecommerce' in value['categories']:
print 'in'
使用这种方法,即使'cms'不存在,也会打印'in'。我希望它只在两个字符串都存在时继续。
答案 0 :(得分:2)
要检查它们是否存在于整个字典中,我会在整个字典中创建一组所有类别,并使用它:
all_categories = {
category
for value in a.values() for category in value['categories']
}
if 'cms' in all_categories and 'ecommerce' in all_categories:
print("Yes, that strange order of for clauses is actually correct...")
答案 1 :(得分:2)
另一种纯粹没有副作用的表达方式:
test = ( any([ u'cms' in c.get('categories') for c in a.values() ]) and
any([ u'ecommerce' in c.get('categories') for c in a.values() ]) )
注意:如果要运行代码,请更改为c.get('categories',[])
,如果某些a.values()
不包含关键字'类别'。