文字列の形式は のようなもの"a:1 b:2 c:x d:2.13e-5"
ですが、Python dict にすばやく簡単に変換する方法はありますか?
-------------- 編集行 --------------
素晴らしい答えによると、私はいくつかの方法を試しました(ipythonで):
In [6]: import re
In [7]: %paste
def f1(line):
item_dict = {}
for item in line.split():
kv = item.split(':')
item_dict[kv[0]] = kv[1]
def f2(line):
item_dict = {}
item_pat = re.compile(r'(\w+):(.+)')
for item in line.split():
m_res = item_pat.match(item)
item_dict[m_res.group(1)] = m_res.group(2)
def f3(line):
dict(item.split(':') for item in line.split())
## -- End pasted text --
In [8]: line = 'a:1 b:3243 dsfds:4323llsjdf \t fdsf:3232l'
In [9]: %timeit f1(line)
100000 loops, best of 3: 3.99 us per loop
In [10]: %timeit f2(line)
100000 loops, best of 3: 8.83 us per loop
In [11]: %timeit f3(line)
100000 loops, best of 3: 5.19 us per loop
最初の方法のf1()
方が速いように見えますが、私のアプリケーションでは、何百万回も呼び出されるため、まだ多くの時間 (全体の約 30%) を使用しています。
もっと効果的な方法はありますか?それともcython
?