我有一個這樣的清單。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
提交
取消