我在python中有一个字符串:
dic = {
"field1": "data1",
"field2": "data2",
"field3": "data3"
}
我需要使用以下字符串创建一个dic:
{{1}}
我该怎么做?
答案 0 :(得分:1)
您需要在||之后分割数据。但是正确的field3和data3的顺序不正确。
string = "field1|data1||field2|data2||field3||data3"
dic = {}
data = string.split("||")
for i in range(len(data)):
elem = data[i]
if "|" in elem:
keyVal = elem.split("|")
dic[keyVal[0]] = keyVal[1]
print(dic)
答案 1 :(得分:1)
您可以对split
使用dict理解,首先输入||
,然后再输入每个|
:
{k: v for k, v in (i.split('|') for i in text.split('||'))}
如果您喜欢map
:
{k: v for k, v in map(lambda i: i.split('|'), text.split('||'))}
示例:
In [12]: text = "field1|data1||field2|data2||field3|data3"
In [13]: {k: v for k, v in (i.split('|') for i in text.split('||'))}
Out[13]: {'field1': 'data1', 'field2': 'data2', 'field3': 'data3'}
In [14]: {k: v for k, v in map(lambda i: i.split('|'), text.split('||'))}
Out[14]: {'field1': 'data1', 'field2': 'data2', 'field3': 'data3'}
答案 2 :(得分:0)
说辞是最优雅的方式
string = "field1|data1||field2|data2||field3|data3"
{k:v for k,v in [i.split("|") for i in string.split("||")]}
但是,可以使用传统的for循环
d={}
for i in string.split(r"||"):
temp = (i.split("|"))
d[temp[0]]=temp[1]