Convert list of strings to dictionary

前端 未结 7 862
深忆病人
深忆病人 2020-12-01 22:08

I have a list

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

I would like to convert it to a dictionary as

{\'Tests r         


        
相关标签:
7条回答
  • 2020-12-01 22:13

    Try this

    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]:
    
    0 讨论(0)
  • 2020-12-01 22:15

    naive solution assuming you have a clean dataset:

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

    This assumes that you do not have duplicates and you don't have other colons in there.

    What happens is that you first split the strings into a tuple of two values. You do this here with a generator expression. You can pass this directly into the dict, since a dict knows how to handle an iterable yielding tuples of length 2.

    0 讨论(0)
  • 2020-12-01 22:20

    Use:

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

    returns:

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

    If you want integers, change the assignment in:

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

    This will give:

    {' Failures': 0, 'Tests run': 1, ' Errors': 0}
    
    0 讨论(0)
  • 2020-12-01 22:22
    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)
    

    Result

    {' Failures': 0, 'Tests run': 1, ' Errors': 0}
    
    0 讨论(0)
  • 2020-12-01 22:29
    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)
    

    output:

    {'Tests run': 1, 'Errors': 0, 'Failures': 0}
    
    0 讨论(0)
  • 2020-12-01 22:30

    Loop over your list, and split by the colon. Then assign the first value to the second value in a dict object:

    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'}
    
    0 讨论(0)
提交回复
热议问题