5.python 字符串/列表/元组/字典之间的相互转换

  • 2020 年 3 月 12 日
  • 笔记

一.字符串str与列表list

1.字符串转列表

字符串转为列表list,可以使用str.split()方法,split方法是在字符串中对指定字符进行切片,并返回一个列表,示例代码如下:

# !usr/bin/env python  # -*- coding:utf-8 _*-  """  @Author:何以解忧  @Blog(个人博客地址): shuopython.com  @WeChat Official Account(微信公众号):猿说python  @Github:www.github.com     @File:python_data.py  @Time:2019/9/20 20:45     @Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!  """     str1 = "hello word 猿说python python教程"  print(str1)                 # 输出字符串  print(type(str1))           # 输出数据类型:  print(len(str1))            # 输出字符串长度     print("***"*20)             # 小敲门:直接打印60个*  #根据空格切片  list1 = str1.split(" ")     # 对字符串中的空格(' ')进行切片,返回值是一个列表list并赋值给list1  print(list1)                # 输出列表数据  print(type(list1))          # 输出数据类型:类型  print(len(list1))           # 输出列表长度(列表的数据个数)     print("***"*20)             # 小敲门:直接打印60个*  #根据字符'p'切片  list1 = str1.split("p")     # 对字符串中的'p'进行切片,返回值是一个列表list并赋值给list1  print(list1)                # 输出列表数据  print(type(list1))          # 输出数据类型:类型  print(len(list1))           # 输出列表长度(列表的数据个数)     print("***"*20)             # 小敲门:直接打印60个*  #根据字符'o'切片  list1 = str1.split("o")     # 对字符串中的'o'进行切片,返回值是一个列表list并赋值给list1  print(list1)                # 输出列表数据  print(type(list1))          # 输出数据类型:类型  print(len(list1))           # 输出列表长度(列表的数据个数)

输出结果:

hello word 猿说python python教程  <class 'str'>  28  ************************************************************  ['hello', 'word', '猿说python', 'python教程']  <class 'list'>  4  ************************************************************  ['hello word 猿说', 'ython ', 'ython教程']  <class 'list'>  3  ************************************************************  ['hell', ' w', 'rd 猿说pyth', 'n pyth', 'n教程']  <class 'list'>  5

2.列表转字符串

列表转为字符串需要使用”.join()方法,join()方法可以直接将列表转为一个字符串,示例代码如下:

list1 = ["hello", "word", "猿说python", "python教程"]  print(list1)                 # 输出字符串  print(type(list1))           # 输出数据类型:  print(len(list1))            # 输出字符串长度     print("***"*20)             # 小敲门:直接打印60个*  #根据空格切片  str1 = "".join(list1)      # 对字符串中的空格(' ')进行切片,返回值是一个列表list并赋值给list1  print(str1)                # 输出列表数据  print(type(str1))          # 输出数据类型:类型  print(len(str1))           # 输出列表长度(列表的数据个数)

输出结果:

['猿说python', 'word', 'python教程', 'hello']  <class 'list'>  4  ************************************************************  猿说pythonwordpython教程hello  <class 'str'>  25

二.字符串str与字典dict

1.字符串转字典

将字符串转为字典可以通过内置函数eval()完成,对于内置函数eval()的使用,在后面的文章还会有详细讲解,今天先简单了解一下:

# 注意单引号和双引号的配合使用  str1 = '{"name":"zhangsan","age":18,"sing_dog":False }'  print(str1)  print(type(str1))  print(len(str1))        print("***"*20) # 小敲门:直接打印60个*  dict1 = eval(str1) # 强制将字符串str转为字典dict  print(dict1)  print(type(dict1))  print(len(dict1))

输出结果:

{"name":"zhangsan","age":18,"sing_dog":False }  <class 'str'>  46  ************************************************************  {'name': 'zhangsan', 'age': 18, 'sing_dog': False}  <class 'dict'>  3

2.字典转字符串

将字典转为字符串可以直接通过str()类型强制转换即可,示例代码如下:

dict1 = {"name":"zhangsan","age":18,"sing_dog":False }  print(dict1)  print(type(dict1))  print(len(dict1))        print("***"*20) # 小敲门:直接打印60个*  str1 = str(dict1) # 强制将字典dict转为字符串str  print(str1)  print(type(str1))  print(len(str1))

输出结果:

{'name': 'zhangsan', 'age': 18, 'sing_dog': False}  <class 'dict'>  3  ************************************************************  {'name': 'zhangsan', 'age': 18, 'sing_dog': False}  <class 'str'>  50

三.列表list与字典dict

1.列表转字典

列表转为字典不能通过dict()强制转换,但是可以通过内置函数zip()完成,具体代码如下:

list1 = ["hello", "word", "猿说python", "python教程"]  list2 = ["a","b","c","d","e","f","g"]  dict1 = dict(zip(list1,list2))     print(dict1)  print(type(dict1))  print(len(dict1))

输出结果:

{'hello': 'a', 'word': 'b', '猿说python': 'c', 'python教程': 'd'}  <class 'dict'>  4

注意:内置函数zip 是将两个列表的数据两两组合形成键值对,构成字典;如果两个列表的长度不一致时,多出的元素在另一个列表无匹配的元素时就不展示多出的元素。

2.字典转列表

可以通过list()方法强制将字典中的key 或者 value转为列表,示例代码如下:

dict1 = {"name":"zhangsan","age":18,"sing_dog":False }  # 强制将字典dict中的keys转为列表  list1= list(dict1.keys())  print(list1)  print(type(list1))  print(len(list1))        print("***"*20) # 小敲门:直接打印60个*  # 强制将字典dict中的values转为列表  list2 = list(dict1.values())  print(list2)  print(type(list2))  print(len(list2))

输出结果:

['name', 'age', 'sing_dog']  <class 'list'>  3  ************************************************************  ['zhangsan', 18, False]  <class 'list'>  3