How to split a string within a list to create key-value pairs in Python
You can feed a map
object directly to dict
. For built-in functions without arguments, map
should show similar or better performance. You will see a drop-off in performance when introducing arguments:
from functools import partial
L = ['abc=lalalla', 'appa=kdkdkdkd', 'kkakaka=oeoeoeo']
L2 = ['abc lalalla', 'appa kdkdkdkd', 'kkakaka oeoeoeo']
n = 100000
L = L*n
L2 = L2*n
%timeit dict(map(partial(str.split, sep='='), L)) # 234 ms per loop
%timeit dict(s.split('=') for s in L) # 164 ms per loop
%timeit dict(map(str.split, L2)) # 141 ms per loop
%timeit dict(s.split() for s in L2) # 144 ms per loop
a = [ 'abc=lalalla', 'appa=kdkdkdkd', 'kkakaka=oeoeoeo']
d = dict(s.split('=') for s in a)
print d
Output:
{'kkakaka': 'oeoeoeo', 'abc': 'lalalla', 'appa': 'kdkdkdkd'}
http://codepad.org/bZ8lGuHE
In addition, make sure you limit the splits to 1, in case the right-hand side contains an '='.
d = dict(s.split('=',1) for s in a)
print dict([s.split("=") for s in my_list])
like this
>>> my_list = [ 'abc=lalalla', 'appa=kdkdkdkd', 'kkakaka=oeoeoeo']
>>> print dict(s.split("=") for s in my_list) #thanks gribbler
{'kkakaka': 'oeoeoeo', 'abc': 'lalalla', 'appa': 'kdkdkdkd'}