【问题标题】:Convert list of strings to dictionary将字符串列表转换为字典
【发布时间】:2014-05-23 17:49:51
【问题描述】:

我有一个清单

['Tests run: 1', ' Failures: 0', ' Errors: 0']

我想把它转换成字典

{'Tests run': 1, 'Failures': 0, 'Errors': 0}

我该怎么做?

【问题讨论】:

    标签: python string list dictionary split


    【解决方案1】:

    用途:

    a = ['Tests run: 1', ' Failures: 0', ' Errors: 0']
    
    d = {}
    for b in a:
        i = b.split(': ')
        d[i[0]] = i[1]
    
    print d
    

    返回:

    {' Failures': '0', 'Tests run': '1', ' Errors': '0'}
    

    如果你想要整数,改变赋值:

    d[i[0]] = int(i[1])
    

    这将给出:

    {' Failures': 0, 'Tests run': 1, ' Errors': 0}
    

    【讨论】:

      【解决方案2】:

      试试这个

      In [35]: a = ['Tests run: 1', ' Failures: 0', ' Errors: 0']
      
      In [36]: {i.split(':')[0]: int(i.split(':')[1]) for i in a}
      Out[36]: {'Tests run': 1, ' Failures': 0, ' Errors': 0}
      
      In [37]:
      

      【讨论】:

        【解决方案3】:
        a = ['Tests run: 1', ' Failures: 0', ' Errors: 0']
        b = dict([i.split(': ') for i in a])
        final = dict((k, int(v)) for k, v in b.items())  # or iteritems instead of items in Python 2
        print(final)
        

        结果

        {' Failures': 0, 'Tests run': 1, ' Errors': 0}
        

        【讨论】:

          【解决方案4】:

          假设你有一个干净的数据集的简单解决方案:

          intconv = lambda x: (x[0], int(x[1]))
          
          dict(intconv(i.split(': ')) for i in your_list)
          

          这假定您没有重复项,并且其中没有其他冒号。

          发生的情况是,您首先将字符串拆分为两个值的元组。您可以在此处使用生成器表达式执行此操作。您可以将其直接传递给 dict,因为 dict 知道如何处理长度为 2 的可迭代生成元组。

          【讨论】:

            【解决方案5】:
            l = ['Tests run: 1', ' Failures: 0', ' Errors: 0']
            d = dict([map(str.strip, i.split(':')) for i in l])
            for key, value in d.items():
                d[key] = int(value)
            print(d)
            

            输出:

            {'Tests run': 1, 'Errors': 0, 'Failures': 0}
            

            【讨论】:

              【解决方案6】:
              >>> s = ['Tests run: 1', ' Failures: 0', ' Errors: 0']
              >>> {i.split(":")[0].strip():int(i.split(":")[1].strip()) for i in s}
              {' Failures': 0, 'Tests run': 1, ' Errors': 0}
              

              【讨论】:

                【解决方案7】:

                遍历您的列表,并用冒号分隔。然后将第一个值赋给 dict 对象中的第二个值:

                x = ['Tests run: 1', ' Failures: 0', ' Errors: 0']
                y = {}
                for k in x:
                    c = k.split(':')
                    y[str(c[0]).replace(" ", "")] = str(c[-1]).replace(" ", "")
                
                print(y)
                #{'Failures': '0', 'Tests run': '1', 'Errors': '0'}
                

                【讨论】:

                  猜你喜欢
                  • 2011-07-12
                  • 2019-05-29
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  相关资源
                  最近更新 更多