Python实现字符串与字典互转:从基础逻辑到代码优化
本文详细讲解Python中字符串与字典相互转换的实现逻辑。通过解析“key=value”格式的字符串,演示如何利用split方法提取键值对并构建字典;反之,将字典转为查询字符串时,介绍如何遍历items并拼接。文中对比了多种编码方式,从显式索引访问到解包赋值,再到格式化输出,逐步优化代码简洁性与可读性,适用于Python初学者理解数据结构转换。
一、将字符串内容提取并转换为字典
具体处理流程如下:
1、获取原始字符串s,利用分隔符提取出列表s1。 示例字符串:s=”name=lyy&age=3&sex=women&boyfriend=czt”
2、对列表s1进行二次拆分。由于s1包含4个元素,需遍历该列表,获取形如“name=lyy”的子字符串s2。
3、再次使用分割操作将s2拆分为列表s3。
4、此时s3内容为[name,lyy],分别对应字典的键和值。将s3[0]赋值给键,s3[1]赋值给值。
参考代码如下:
# -*- coding: utf-8 -*-
s="name=lyy&age=3&sex=women&boyfriend=czt"
d={
}
s1=s.split("&")
# print s1
for i in xrange(4):
s2=s1[i]
# print s2
s3=s2.split("=")
print s3
key=s3[0]
value=s3[1]
d[key]=value
print d
对代码进行改进,主要优化点在于直接使用s2 in s1执行遍历操作。
# -*- coding: utf-8 -*-
s="name=lyy&age=3&sex=women&boyfriend=czt"
d={
}
s1=s.split("&")
# print s1
for s2 in s1:
s3=s2.split("=")
print s3
key=s3[0]
value=s3[1]
d[key]=value
print d
二、将字典内容提取并转换为字符串
具体处理流程如下:
1、获取字典项目,使用items方法使字典的键值对成为列表s1的每个元素,此时s1为列表类型。
2、遍历s1的每个元素,首先读取每个元素的键和值,即key=s1[0],value=s1[2]。
3、此时key和value均为字符串类型,使用“=”将它们连接。
4、利用append方法将每次连接好的等式存入列表,最终形成存储所有等式的列表。
5、使用列表的join方法,在列表中插入“&”符号进行连接。
# -*- coding: utf-8 -*-
d={'age': '3', 'boyfriend': 'czt', 'name': 'lyy', 'sex': 'women'}
s1=d.items()
lst=[]
print s1
for i in xrange(4):
s2=s1[i]
print s2
key=s2[0]
value=s2[1]
print key
print value
s3=key+"="+value
print s3
lst.append(s3)
print lst
print "&".join(lst)
同样对步骤进行简化,循环内的语句可写作:
for s2 in s1: key=s2[0] value=s2[1] s3=key+"="+value lst.append(s3)
由于s2中仅包含两个元素,可进一步简化:
for s2 in s1: key,value=s2 s3=key+"="+value lst.append(s3)
发现s2也可省略,但上述key和value的连接依赖s2,可通过格式化字符串输出摆脱这种依赖,简化后的代码如下:
# -*- coding: utf-8 -*-
d={'age': '3', 'boyfriend': 'czt', 'name': 'lyy', 'sex': 'women'}
s1=d.items()
lst=[]
for key,value in s1:
s3="%s=%s"%(key,value)
lst.append(s3)
print "&".join(lst)
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持本站。
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









