将字符串列表转换为字典
Posted
技术标签:
【中文标题】将字符串列表转换为字典【英文标题】: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
我该怎么做?
【问题讨论】:
【参考方案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'
【讨论】:
以上是关于将字符串列表转换为字典的主要内容,如果未能解决你的问题,请参考以下文章