2012-07-26 20 views
2

假設我有以下代碼:從一個字符串中添加2字典項

new_dict = {} 
text = "Yes: No Maybe: So" 

我想了分割字符串成2個字典元素,像這樣:

new_dict = {'Yes':'No', 'Maybe':'So'} 

我試圖分裂以同樣的方式將它們串成一個清單,以便了解如何做到這一點,但我沒有取得太大的成功。

+3

如果你有機會什麼'文本「應該是,你最好添加一些類似'''的分隔符。順便說一下,骯髒和快速的解決方案是在空間上分解字符串,然後從數組中取對(從第一個移除':'並將其添加到字典中。 – Leri 2012-07-26 11:42:18

回答

4
text = "Yes: No Maybe: So" 
words = [w.rstrip(':') for w in text.split()] 
new_dict = dict(zip(words[::2], words[1::2])) 
2

如果每個冒號後面有一個空格,str.split()將正常工作對您:

tokens = (s.rstrip(":") for s in text.split()) 
new_dict = dict(zip(tokens, tokens)) 
1
>>> import re 
>>> text = "Yes: No Maybe: So" 
>>> dict(re.findall(r'(\w+): (\w+)', text)) 
{'Maybe': 'So', 'Yes': 'No'} 

或更高效:

>>> dict(m.groups() for m in re.finditer(r'(\w+): (\w+)', text)) 
{'Maybe': 'So', 'Yes': 'No'} 
相關問題