次のコードがあるとします。
new_dict = {}
text = "Yes: No Maybe: So"
次のように、文字列を2つの辞書要素に分割したい:
new_dict = {'Yes':'No', 'Maybe':'So'}
方法を簡単に理解するために、同じ方法で文字列をリストに分割しようとしましたが、あまり成功していません。
次のコードがあるとします。
new_dict = {}
text = "Yes: No Maybe: So"
次のように、文字列を2つの辞書要素に分割したい:
new_dict = {'Yes':'No', 'Maybe':'So'}
方法を簡単に理解するために、同じ方法で文字列をリストに分割しようとしましたが、あまり成功していません。
text = "Yes: No Maybe: So"
words = [w.rstrip(':') for w in text.split()]
new_dict = dict(zip(words[::2], words[1::2]))
各コロンの後にスペースが続く場合は、str.split()
うまく機能します。
tokens = (s.rstrip(":") for s in text.split())
new_dict = dict(zip(tokens, tokens))
>>> 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'}