将字符串列表转换为字典

时间:2014-04-10 07:07:46

标签: python list python-2.7 dictionary

我有一个清单

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

我想将其转换为字典

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

我该怎么做?

7 个答案:

答案 0 :(得分:8)

使用:

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}

答案 1 :(得分:2)

天真的解决方案,假设你有一个干净的数据集:

intconv = lambda x: (x[0], int(x[1]))

dict(intconv(i.split(': ')) for i in your_list)

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

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

答案 2 :(得分:2)

检查此 Demo ideOne

的Python

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.iteritems()) // Python3 use items() instead of iteritems()
print(final)

结果

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

答案 3 :(得分:2)

试试这个,

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


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

答案 4 :(得分:2)

l = ['Tests run: 1', ' Failures: 0', ' Errors: 0']
d = dict([map(str.strip,i.split(':')) for i in l])
for key,value in d.iteritems():
    d[key] = int(value)
print d

输出:

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

答案 5 :(得分:1)

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

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

print y
#{'Failures': '0', 'Tests run': '1', 'Errors': '0'}

答案 6 :(得分:1)

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