将{a-b,b-c,c-a}更改为{(a,b),(b,c),(c,a)}?

时间:2017-02-12 23:13:20

标签: python

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')},因此更容易将数据作为边引用。我该怎么做?

2 个答案:

答案 0 :(得分:1)

您只需使用集合理解解析边缘并在.buttonclass{ display:block; margin: auto; } 上拆分:

'-'

答案 1 :(得分:0)

要将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')}