验证是否存在对象存在所需的所有组件

时间:2016-08-31 15:58:18

标签: python

我需要编写一个脚本,该脚本从外部源获取组件列表,并根据预定义列表验证服务是否完整。这是必需的,因为单个组件的存在并不自动暗示服务存在 - 即使没有服务,某些组件也会预先安装。我在下面设计了一些非常简单的东西,但我想知道这样做的智能方法是什么?必须有一种更清洁,更简单的方式。

# 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...

3 个答案:

答案 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)

你可以缩短它,但是你会失去可读性。你现在拥有的可能很好。我会亲自使用第一种方法,因为它通过设置操作清楚地表达了你的意图。