2013-10-26 65 views
2

聲明:我是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的方式來編寫lists_to_dyn(lists)函數?

回答

5

它類似於通過另一種方法:

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

你不需要建立中間的列表,發電機表達式是足夠的。 – roippi

+0

@roippi感謝您的提示!我已更新該帖子。 – dparpyani

+0

謝謝@dparpyani!與我玩的相比,這非常整齊。乾杯。 –

相關問題