簡體   English   中英

將集合從 {ab,bc,ca} 更改為 {(a,b),(b,c),(c,a)}?

[英]Change set from {a-b,b-c,c-a} to {(a,b),(b,c),(c,a)}?

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')}因此更容易將數據引用為邊。 我該怎么做?

您可以使用集合推導簡單地解析邊緣並在'-'上拆分:

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

用於將{'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(','))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM