我需要编写一个脚本,该脚本从外部源获取组件列表,并根据预定义列表验证服务是否完整。这是必需的,因为单个组件的存在并不自动暗示服务存在 - 即使没有服务,某些组件也会预先安装。我在下面设计了一些非常简单的东西,但我想知道这样做的智能方法是什么?必须有一种更清洁,更简单的方式。
# Components that make up a complete service
serviceComponents = ['A','B']
# Input from JSON
data = ['B','A','C']
serviceComplete = True
for i in serviceComponents:
if i in data:
print 'yay ' + i + ' found from ' + ', '.join(service2)
else:
serviceComplete = False
break
# If serviceComplete = True do blabla...
答案 0 :(得分:1)
# Components that make up a complete service
serviceComponents = ['A','B']
# Input from JSON
data = ['B','A','C']
if all(item in data for item in serviceComponents):
print("All required components are present")
答案 1 :(得分:1)
Built-in Set将为您服务,使用set.issubset确定您所需的服务组件是输入数据的子集:
serviceComponents = set(['A','B'])
input_data = set(['B','A','C'])
if serviceComponents.issubset(input_data):
# perform actions ...
答案 2 :(得分:1)
你可以通过几种不同的方式来做到这一点:
set(serviceComponents) <= set(data)
set(serviceComponents).issubset(data)
all(c in data for c in serviceComponents)
你可以缩短它,但是你会失去可读性。你现在拥有的可能很好。我会亲自使用第一种方法,因为它通过设置操作清楚地表达了你的意图。