2017-02-12 2 views
1
v = input("enter the vertices: ") 
v = [x.strip(' ') for x in v.split(',')] 

e = input("enter the edges: ") 
e = [x.strip(' ') for x in e.split(',')] 

edges = set(e) 
print(edges) 

제목으로 말하면 출력을 {'a-b', 'c-a', 'b-c'}에서 {('a','b'),('b','c'),('c','a')}으로 변경하여 데이터를 가장자리로 참조하는 것이 더 쉽습니다. 어떻게하면 좋을까요?{a-b, b-c, c-a}에서 {(a, b), (b, c), (c, a)}로 변경 하시겠습니까?

+0

첫 번째 반복에서 원하는 집합을 만들려면 가장자리에'tuple (x.strip(). split ('-'))'을 사용하면됩니다. – dnswlt

+3

게시물을 파손하지 마십시오. 질문을 게시하면 스택 오버플로 커뮤니티에 속합니다 (CC-by-SA 라이센스에 따라). 이 게시물을 귀하의 계정에서 연결 해제하려면 [해체 요청의 올바른 경로는 무엇입니까?] (http://meta.stackoverflow.com/questions/323395/what-is-the-proper-rout)를 참조하십시오. 해체 요청을위한 e) – tripleee

답변

0

{('a','b'),('b','c'),('c','a')}{'a-b', 'c-a', 'b-c'} 변환을 위해, 당신은 당신의 세트에 각 문자열 항목을 분할하는 발전기 표현를 사용할 수있다 - 기준 :

>>> input_set = {'a-b','b-c','c-a'} 

#      v `str.split()` returns list. And list are non-hashable. 
#      v type-cast it to tuple in order to use it with `set`. 
>>> output_Set = set(tuple(s.split('-')) for s in input_set) 
>>> output_Set 
{('c', 'a'), ('b', 'c'), ('a', 'b')} 

그러나 집합을 만들 필요가 없습니다 문자열의.

v = set(x.strip().split('-') for x in v.split(',')) 
1

당신은 단순히 '-'세트 이해 및 분할을 사용하여 가장자리를 구문 분석 할 수 있습니다 :

e = input("enter the edges: ") 
e = {tuple(x.strip().split('-')) for x in e.split(',')} 
관련 문제