2015-03-25 41 views
1

我有串象下面這樣:Python字符串兩個dimensionals列表

FuntionStr='AccName,S,Balance,N,AccrInterest,N' 

我想字符串轉換兩個dimensionals列表:

FuntionList=[('AccName','S'),('Balance','N'),('AccrInterest','N')] 

請幫忙給我任何的示例代碼。

問候,

+1

這不是一個二維列表,是一個元組列表。 – lapinkoira 2015-03-25 09:29:51

+0

如果我的回答有用,請不要忘記接受它。謝謝! – 2015-03-26 13:43:36

+0

歡迎您,感謝您的代碼。 – 2015-03-27 03:09:36

回答

0

你的預期輸出是元組,你可以用zipstr.split得到的列表,並使用iter比切片更有效。

FuntionStr='AccName,S,Balance,N,AccrInterest,N' 
it = iter(FuntionStr.split(",")) 

print(list(zip(it,it))) 
[('AccName', 'S'), ('Balance', 'N'), ('AccrInterest', 'N')] 

如果你有分裂後的長短不均服務,您不想丟失任何數據,你可以使用zip_longest

FuntionStr='AccName,S,Balance,N,AccrInterest,N,foo' 
it = iter(FuntionStr.split(",")) 
from itertools import zip_longest 
print(list(zip_longest(it, it,fillvalue="")))] 
('AccName', 'S'), ('Balance', 'N'), ('AccrInterest', 'N'), ('foo', '')] 
+0

謝謝你的代碼。它幫助我充分。 – 2015-03-25 09:35:11

+0

@RimSovankiry,不用擔心,如果字符串不均勻會發生什麼? – 2015-03-25 09:36:35

+1

哇很酷,返回[]。如果字符串是空白的。 – 2015-03-25 09:41:37

0

試試這個

temp = FuntionStr.split(',') 
>>>zip(temp[::2], temp[1::2]) 
[('AccName', 'S'), ('Balance', 'N'), ('AccrInterest', 'N')] 
1

爲了得到這個:

FuntionStr='AccName,S,Balance,N,AccrInterest,N' 
my_list = FuntionStr.split(',') 
print my_list 
print zip(my_list[::2], my_list[1::2]) 

OUTPUT:

[('AccName','S'),('Balance','N'),('AccrInterest','N')]