Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从{a-b,b-c,c-a}到{(a,b),(b,c),(c,a)}的变化集?_Python - Fatal编程技术网

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(','))