在Python编程中,我们常常会使用字符串(str)、列表(list)及字典(dict)这样的数据结构,当然也就常常需要涉及到这三种类型的相互转化。本文将竭尽笔者所能将以上三种数据结构的转化为大家详尽介绍。
一、字符串 — > 列表
1、使用内置函数 list ()
描述:list()函数是Python的内置函数。它可以将任何可迭代数据转换为列表类型,并返回转换后的列表。当参数为空时,list函数可以创建一个空列表。
语法:
list(object)
object 为待转换为列表的数据类型。
str = "chenkk zijunjun"
list1 = list(str) #将字符串转化为列表
print(str)
print(list1)
print(type(list1))
#Outout
#chenkk zijunjun
#['c', 'h', 'e', 'n', 'k', 'k', ' ', 'z', 'i', 'j', 'u', 'n', 'j', 'u', 'n']
#<class 'list'>
2、使用内置函数 eval()
描述:eval() 函数用来执行一个字符串表达式,并返回表达式的值。也可以将字符串转成相应的对象(如list、tuple、dict和string之间的转换)
语法:
eval(expression[, globals[, locals]])
参数:
- expression – 表达式。
- globals – 变量作用域,全局命名空间,如果被提供,则必须是一个字典对象。
- locals – 变量作用域,局部命名空间,如果被提供,可以是任何映射对象。
str = "['chenkk','zijunjun']"
list2 = eval(str)
print(type(list2))
print(list2)
#Outout
#<class 'list'>
#['chenkk', 'zijunjun']
3、使用内置模块 json.loads() 方法
import json
str = '["chenkk","zijunjun"]'
list3 = json.loads(str)
print(type(list3))
print(list3)
'''json.loads()是将json格式字符串转换为python对象,
而json的标准规范应该使用双引号,单引号会报错。'''
#Outout
#<class 'list'>
#['chenkk', 'zijunjun']
4、使用 split() 进行分割
描述:Python split() 通过指定分隔符对字符串进行切片,如果参数 num 有指定值,则分隔 num+1 个子字符串。返回是一个列表。
语法:
str.split(str="", num=string.count(str))
参数:
- str – 分隔符,默认为所有的空字符,包括空格、换行(\n)、制表符(\t)等。
- num – 分割次数。默认为 -1, 即分隔所有。
返回值:
返回分割后的字符串列表。
str = 'chen&kk&zi&jun&jun'
list4 = str.split('&')
print(type(list4))
print(list4)
#Outout
#<class 'list'>
#['chen', 'kk', 'zi', 'jun', 'jun'] 返回分割后的字符串列表
如果对多个字符进行分割,那么可以使用内置模块 re.split() 方法。大家可以参考我给出的这个链接,了解更多re模块的方法
import re
str = "1cat2dogs3cats4"
list5 = re.split(r"\d+",str)
print(type(list5))
print(list5)
#Outout
#<class 'list'>
#['', 'cat', 'dogs', 'cats', '']
re.split方法并不完美,比如下例中分割后的字符串列表首尾都多了空格,需要手动去除。
二、列表 — > 字符串
1、使用内置函数 str()
描述:
str() 函数将对象转化为适于人阅读的形式。
语法:
str(object)
参数:
- object – 对象。
list1 = ['chen', 'kk', 'zi', 'jun', 'jun']
print(list1)
print(type(list1))
print(list1[::-1]) #列表逆序输出
list1 = str(list1)
print(list1)
print(type(list1))
print(list1[::-1]) #字符串逆序输出
#Outout
# ['chen', 'kk', 'zi', 'jun', 'jun']
# <class 'list'>
# ['jun', 'jun', 'zi', 'kk', 'chen']
# ['chen', 'kk', 'zi', 'jun', 'jun']
# <class 'str'>
# ]'nuj' ,'nuj' ,'iz' ,'kk' ,'nehc'[
这里面比较列表和字符串时用到了字符串和列表的逆序输出,感兴趣的同学可以点击此链接了解详情。
2、使用 join() 进行拼接
list1 =['username = admin','password = 123456']
print(list1)
print(type(list1))
print('`````````````````')
str1 = ' & '.join(list1)
print(str1)
print(type(str1))
#Outout
# ['username = admin', 'password = 123456']
# <class 'list'>
# `````````````````
# username = admin & password = 123456
# <class 'str'>
三、字符串 — > 字典
1、使用内置函数 eval ()
str1 = "{'username':'admin','password':'123456'}"
print(str1)
print(type(str1))
print('``````````````')
dict1 = eval(str1)
print(type(dict1))
print(dict1)
#Outout
# {'username':'admin','password':'123456'}
# <class 'str'>
# ``````````````
# <class 'dict'>
# {'username': 'admin', 'password': '123456'}
这里简单说一下我对 eval() 函数的使用心得,在输入格式确定的情况下,该函数可以将函数内的语句转换成我们在输入数据初衷想得的数据类型并返回,虽然好用,但是在实际运用中的作用不好评价,在这里仅做了解使用。
四、字典 — > 字符串
使用内置函数 str()
dict1 = {'username': 'admin', 'password': '123456'}
str1 =str(dict1)
print(type(str1))
print(str1)
#Outout
#<class 'str'>
# {'username': 'admin', 'password': '123456'}
五、字典 — > 列表
使用内置函数 list()
dict1 = {'username': 'admin', 'password': '123456'}
print(type(dict1))
print('````````````')
list1 = list(dict1)
print(type(list1))
print(list1)
print('````````````')
list2 = list(dict1.values()) #取到字典的键值
print((type(list2)))
print(list2)
#Outout
# <class 'dict'>
# ````````````
# <class 'list'>
# ['username', 'password']
# ````````````
# <class 'list'>
# ['admin', '123456']
六、列表 — > 字典
1、使用内置函数 doct() ,将嵌套列表转换为字典
list1 = [['a',1],['b',2],['c',True]]
dict1 = dict(list1)
print(type(dict1))
print(dict1)
#Outout
#<class 'dict'>
#{'a': 1, 'b': 2, 'c': True}
2、使用内置函数zip(),将两个列表转换为字典
list1 = ['a','b','c','d','e']
list2 = ['1','2','3','4','5']
dict1 = dict(zip(list1,list2))
print(type(dict1))
print(dict1)
#Outout
#<class 'dict'>
#{'a': '1', 'b': '2', 'c': '3', 'd': '4', 'e': '5'}
如果两个列表长度不一样时,那么就不展示多出来的元素。
list1 = ['a','b','c','d','e']
list2 = ['1','2','3']
dict1 = dict(zip(list1,list2))
print(type(dict1))
print(dict1)
#Outout
#<class 'dict'>
#{'a': '1', 'b': '2', 'c': '3'}