Python实现字符串与字典互转:从基础逻辑到代码优化

许南星
许南星
发布时间:2026-10-13 | 3人浏览过
原创

本文详细讲解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)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持本站。

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表