2017-02-12 15 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ライセンスのもとで)大規模なスタックオーバーフローコミュニティに属します。この投稿とアカウントとの関連付けを解除する場合は、[disassociation requestの正しいルートは何ですか?](http://meta.stackoverflow.com/questions/323395/what-is-the-proper-rout)を参照してください。解離要求のための電子メール) – 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(',')} 
関連する問題