2017-02-12 263 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

請不要破壞你的帖子。一旦你發佈了一個問題,它就一般屬於Stack Overflow社區(在CC-by-SA許可下)。如果您想取消關聯該帳戶與您的帳戶的關聯,請參閱[解除請求的正確途徑是什麼?](http://meta.stackoverflow.com/questions/323395/what-is-the-proper-rout的e-FOR-A - 解離 - 請求) – tripleee

回答

0

用於轉換{'a-b', 'c-a', 'b-c'}{('a','b'),('b','c'),('c','a')},您可以使用發電機表達每個字符串項在您所設定的分割基於-爲:

>>> 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(',')} 
相關問題