我有一个清单
['Tests run: 1', ' Failures: 0', ' Errors: 0']
我想将其转换为字典
{'Tests run': 1, 'Failures': 0, 'Errors': 0}
我该怎么做?
答案 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)
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}