【问题标题】:How to split a string within a list to create key-value pairs in Python如何在列表中拆分字符串以在 Python 中创建键值对
【发布时间】:2026-02-23 12:15:02
【问题描述】:

我有一个如下所示的列表:

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

我想用 '=' 分割这个列表,这样左边的所有内容都将成为键,而右边的则成为值。

{ 
    'abc':'lalalla',
    'appa':'kdkdkdkd',
    'kkakaka':'oeoeo'
}

【问题讨论】:

    标签: python string


    【解决方案1】:
    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

    【讨论】:

      【解决方案2】:

      此外,请确保将拆分限制为 1,以防右侧包含“=”。

      d = dict(s.split('=',1) for s in a)
      

      【讨论】:

        【解决方案3】:
        print dict([s.split("=") for s in my_list])
        

        喜欢这个

        >>> 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'}
        

        【讨论】:

        • 除非你的 python 已经很老了,否则你可以不用列表推导式,像 Demian 那样使用生成器表达式
        • 感谢 gribbler :) 我使用 2.6 并且总是忘记我能做到这一点.. 主要是因为我不能做 dict 理解
        【解决方案4】:

        使用map 函数的示例

        a = ["abc=lalalla", "appa=kdkdkdkd", "kkakaka=oeoeoeo"]
        d = dict(map(lambda s: s.split('='), a))
        

        【讨论】:

          【解决方案5】:

          您可以将map 对象直接提供给dict。对于没有参数的内置函数,map 应该表现出相似或更好的性能。引入参数时,您会看到性能下降:

          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
          

          【讨论】:

            最近更新 更多