我有一个这样的清单。ls = ['Size:10,color:red,', 'Size:10,color: blue,']我想将列表转换为这种格式。[{'Size':'10','color':'red'}, {'Size':'10','color': 'blue'}]我尝试过的是:[dict([pair.split(":", 1)]) for pair in ls] # It gave me output like this.[{'Size': '10,color:red,'}, {'Size': '10,color: blue,'}]但如果列表是这样的['color:blue,']但不能与上面的列表正常工作,则此方法有效。
1 回答
米脂
TA贡献1836条经验 获得超3个赞
我们可以看到,for pair in ls在您的列表中,理解已经值得怀疑,因为 的元素ls不是成对的。每个元素实际上包含一系列对。
这里需要两个循环,一个循环用于迭代外部列表,然后另一个循环用于迭代每个值,因为这些值实际上是由多个字段组成的字符串。
虽然这可以通过嵌套列表理解来实现,但如果您将问题分解为更简单的部分而不是尝试将其全部放入一行中,则会更容易(并且更具可读性)。
result = []
for text in ls:
d = {}
pairs = text.strip(",").split(",")
for pair in pairs:
key, val = pair.split(":")
d[key] = val.strip()
result.append(d)
添加回答
举报
0/150
提交
取消