2014-10-08 77 views
0

以下代碼的pythonic方式是什麼,它基本上是從PHP複製的?Python拆分和操縱結果

def get_extra_info(self, info): 
    extra = [] 
    for i in info.split(';'): 
     t = i.split(':') 
     extra[t[0]] = t[1] 
    return extra 

信息是以下格式

info = "test:1;xxx:4;yyy:12" 
+0

大概你的意思是'extra'是*字典*,而不是列表。 – 2014-10-08 07:18:43

回答

4

您可以使用與dict() function發電機的表達:

return dict(item.split(':', 1) for item in info.split(';')) 

這使得使用的事實dict()函數接受一個可迭代(key, value)雙。 str.split()的參數1將分割限制爲僅一次;更有效率和任何額外的冒號被忽略併成爲價值的一部分。

演示:

>>> info = "test:1;xxx:4;yyy:12" 
>>> dict(item.split(':', 1) for item in info.split(';')) 
{'test': '1', 'xxx': '4', 'yyy': '12'} 
+0

這正是我所期待的。謝謝 – 2014-10-08 07:20:18

0

我猜你使用額外的字典。通過字符串索引列表是不可能的。所以這樣做:

def get_extra_info(self, info): 
    extra = {} 
    for i in info.split(';'): 
     t = i.split(':') 
     extra[t[0]] = t[1] 
    return extra