def strToDict(string): strList = [] # 創建空列表 for i in string.split("&"): # 循環遍歷第一次切割結果 strList.append(i.split("=", 1)) # 切割第二次寫入列表中,只切割一次防止把值里的=切割掉 return dict(strList) # 列表轉換為字典 print(strToDict("id=4&name=zengyu&age=33"))
運行結果:
{'id': '4', 'name': 'zengyu', 'age': '33'}
注意:dict將列表轉換為字典,列表要是二維列表,且元素長度必須為2;
我們可以把上述代碼復雜化,打印每次切割結果,更能懂得是如何轉換為字典的:
string = "id=4&name=zengyu&age=1815=33" strList = [] # 創建空列表 first = string.split("&") print(first) # 查看第一次切割結果 for i in first: second = i.split("=", 1) print(second) # 獲取到二次切割長度為2的列表 strList.append(second) # 將二次切割的列表添加到空列表中 print(strList) # 打印二維列表 newDict = dict(strList) # 轉化為字典 print(newDict)
運行結果:
['id=4', 'name=zengyu', 'age=1815=33']
['id', '4']
['name', 'zengyu']
['age', '1815=33']
[['id', '4'], ['name', 'zengyu'], ['age', '1815=33']]
{'id': '4', 'name': 'zengyu', 'age': '1815=33'}
上述方法是通過定義空列表,然后使用dict函數轉化
另一種方法是通過定義空字典,與上一方法大同小異:
def strToDict(string): newDict = {} for item in string.split("&"): strList = item.split("=", 1) newDict[strList[0]] = strList[1] # 設置空字典的key等於切割列表的第一個元素,value等於第二個元素 return newDict print(strToDict("id=4&name=zengyu&age=1815=33"))