<p>鉴于这些数据:</p>
<pre><code>data = {
'0': [
'ID:123,qty:2,name:zbc',
'ID:234,qty:3,name:xyz',
'ID:456,qty:6,name:opq'
],
'1': [
'ID:666,qty:2,name:ppp',
'ID:322,qty:5,name:uuu'
],
'2' : [
'ID:333,qty:3,name:pqr',
'ID:444,qty:5,name:mmm',
'ID:555,qty:6,name:iii'
]
}
</code></pre>
<h3>解决方案1:</h3>
<p>通过逗号<code>,</code>分割每个字符串以获得每个键值对,然后通过<code>:</code>提取键部分和值部分</p>
<pre><code>data_list = []
for text_list in data.values():
current_list = []
for text in text_list:
text_dict = {}
for split in text.split(','):
key, _, value = split.partition(':')
text_dict[key] = value
current_list.append(text_dict)
data_list.append(current_list)
print(data_list)
</code></pre>
<h3>解决方案2:</h3>
<p>使用正则表达式将每个字符串转换为字典格式。然后使用<code>ast.literal_eval()</code>将其转换为<code>dict</code></p>
<pre><code>import ast
import re
key_value_re = re.compile(r"(\w+):(\w+)")
data_list = [
[
ast.literal_eval("{" + key_value_re.sub(r'"\1":"\2"', text) + "}")
for text in text_list
]
for text_list in data.values()
]
print(data_list)
</code></pre>
<p><strong>输出(两种解决方案):</strong></p>
<pre><code>[
[
{
"ID": "123",
"qty": "2",
"name": "zbc"
},
{
"ID": "234",
"qty": "3",
"name": "xyz"
},
{
"ID": "456",
"qty": "6",
"name": "opq"
}
],
[
{
"ID": "666",
"qty": "2",
"name": "ppp"
},
{
"ID": "322",
"qty": "5",
"name": "uuu"
}
],
[
{
"ID": "333",
"qty": "3",
"name": "pqr"
},
{
"ID": "444",
"qty": "5",
"name": "mmm"
},
{
"ID": "555",
"qty": "6",
"name": "iii"
}
]
]
</code></pre>