I have a list
['Tests run: 1', ' Failures: 0', ' Errors: 0']
I would like to convert it to a dictionary as
{'Tests run': 1, 'Failures': 0, 'Errors': 0}
How do I do it?
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}
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.
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'}