Python 从{a-b,b-c,c-a}到{(a,b),(b,c),(c,a)}的变化集?
正如标题所说,我想将集合从输出Python 从{a-b,b-c,c-a}到{(a,b),(b,c),(c,a)}的变化集?,python,Python,正如标题所说,我想将集合从输出{'a-b','c-a','b-c'}更改为{'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
{'a-b','c-a','b-c'}
更改为{'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(',')}
但是,您不需要创建一组字符串。如果要在第一次迭代时创建所需的集合,可以执行以下操作:
>>> 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')}
只需使用
tuple(x.strip().split('-')
作为边缘。请不要破坏您的帖子。一旦你发布了一个问题,它就属于Stack Overflow社区(在CC by SA许可证下)。如果您想解除此帖子与您帐户的关联,请参阅
v = set(x.strip().split('-') for x in v.split(','))