2016-08-31 6 views
-1

외부 원본에서 구성 요소 목록을 가져오고 미리 정의 된 목록을 기반으로 서비스가 완료되었는지 확인하는 스크립트를 작성해야합니다. 이는 단일 구성 요소가 있어도 서비스가 존재 함을 자동으로 암시하지 않기 때문에 필요합니다. 일부 구성 요소는 서비스가없는 경우에도 사전 설치됩니다. 아래에서 정말 간단한 것을 고안했지만,이 작업을 수행하는 지능적인 방법이 무엇인지 궁금합니다. 더 깔끔하고 간단한 방법이 있어야합니다.개체가 존재하는 데 필요한 모든 구성 요소가 존재하는지 확인

serviceComponents = set(['A','B']) 
input_data = set(['B','A','C']) 
if serviceComponents.issubset(input_data): 
    # perform actions ... 
+0

설정 및 의견을 제거하고 그리 많이 남지는 않습니다. 이것이 얼마나 단순하고/깨끗한가? –

+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
는 입력 데이터의 일부가 당신의 필수 서비스 구성 요소 것을 확인하는 set.issubset를 사용, 당신을 위해 봉사 할 것입니다
set(serviceComponents) <= set(data) 
set(serviceComponents).issubset(data) 
all(c in data for c in serviceComponents) 

더 짧게 만들 수 있지만 가독성은 떨어집니다. 지금 당신이 가진 것은 아마 괜찮을 것입니다. 개인적으로 첫 번째 접근 방식을 사용합니다. 설정 작업을 통해 사용자의 의도를 명확하게 표현하기 때문입니다.

1

Built-in Set

# 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... 
관련 문제