How to split a string within a list to create key-value pairs in Python

后端 未结 5 1675
灰色年华
灰色年华 2020-12-01 14:07

I have a list that looks like this:

[ \'abc=lalalla\', \'appa=kdkdkdkd\', \'kkakaka=oeoeoeo\']

And I want to split this list by \'=\' so th

相关标签:
5条回答
  • 2020-12-01 14:43
    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'}
    
    0 讨论(0)
  • 2020-12-01 14:44

    Example by using map function

    a = ["abc=lalalla", "appa=kdkdkdkd", "kkakaka=oeoeoeo"]
    d = dict(map(lambda s: s.split('='), a))
    
    0 讨论(0)
  • 2020-12-01 14:53

    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)
    
    0 讨论(0)
  • 2020-12-01 14:54

    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
    
    0 讨论(0)
  • 2020-12-01 14:58
    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

    0 讨论(0)
提交回复
热议问题