Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.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 从嵌套列表转换为分隔字符串_Python_Python 3.x - Fatal编程技术网

Python 从嵌套列表转换为分隔字符串

Python 从嵌套列表转换为分隔字符串,python,python-3.x,Python,Python 3.x,免责声明:我是Python新手 我有一个外部服务,它以分隔字符串格式向我们发送数据。它是项目列表,最深可达3级。级别1由“|”分隔。级别2由“;”分隔级别3由“,”分隔。每个级别或元素可以有0个或更多项。一个简化的例子是: a,b;c、 d | e | f,g | h 我们有一个函数,可以将其转换为嵌套列表,这就是Python中对其进行操作的方式 def dyn_to_lists(dyn): return [[[c for c in b.split(',')] for b in a.

免责声明:我是Python新手

我有一个外部服务,它以分隔字符串格式向我们发送数据。它是项目列表,最深可达3级。级别1由“|”分隔。级别2由“;”分隔级别3由“,”分隔。每个级别或元素可以有0个或更多项。一个简化的例子是:
a,b;c、 d | e | f,g | h

我们有一个函数,可以将其转换为嵌套列表,这就是Python中对其进行操作的方式

def dyn_to_lists(dyn):  
    return [[[c for c in b.split(',')] for b in a.split(';')] for a in dyn.split('|')]
对于上面的示例,此函数产生以下结果:

>>> dyn = "a,b;c,d|e||f,g|h;;"
>>> print (dyn_to_lists(dyn))
[[['a', 'b'], ['c', 'd']], [['e']], [['']], [['f', 'g']], [['h'], [''], ['']]]

现在,我可以编写一个循环构造来将其转换回分隔格式,但这会很混乱。是否有一种更像Python的方法来编写一个
列表到(列表)
函数?

它与您的其他方法类似:

def lists_to_dyn(lst):
    return '|'.join(';'.join(','.join(lst3) for lst3 in lst2) for lst2 in lst)

您不需要构建中间列表,生成器表达式就足够了。谢谢@dparpyani!与我玩的东西相比,这是非常整洁的。干杯。@roippi:List的理解速度比
str.join()的生成器快。