Python3下字典、字符串及列表的相互转换

今天我们学习Python中几种常见数据结构的相互转换:字符串(str)字典(dict)列表(list)

字符串--列表

字符串转列表

  • 1.使用内置函数 list()
>>> str1 = "abcdefg"
>>> list1 = list(str1)
>>> print(list1)
['a', 'b', 'c', 'd', 'e', 'f', 'g']
>>>
  • 2.使用内置函数 eval()
>>> str2 = "['aaa', 'bbb', 'ccc', 'ddd']"
>>> list2 = eval(str2)
>>> print(type(list2))
<class 'list'>
>>> print(list2)
['aaa', 'bbb', 'ccc', 'ddd']
>>>
  • 3.使用内置模块 json.loads() 方法
# str3 = "['aaa', 'bbb', 'ccc', 'ddd']"
# 因为 json.loads() 是将json格式字符串转换为python对象,而按 json 的标准规范应该使用双引号,如果使用单引号会导致报错
>>> str3 = '["aaa", "bbb", "ccc", "ddd"]'
>>> import json
>>> list3 = json.loads(str3)
>>> print(type(list3))
<class 'list'>
>>> print(list3)
['aaa', 'bbb', 'ccc', 'ddd']
>>>
  • 4.使用 split() 进行分割
>>> str4 = "username=admin&passsword=123456"
>>> list4 = str4.split("&")
>>> print(type(list4))
<class 'list'>
>>> print(list4)
['username=admin', 'passsword=123456']
>>>

如果我们要对多个字符进行分割,那么可以使用内置模块 re.split() 方法。

>>> str5 = "username=admin&passsword=123456"
>>> import re
>>> list5 = re.split("&|=", str5)
>>> print(type(list5))
<class 'list'>
>>> print(list5)
['username', 'admin', 'passsword', '123456']
>>>

列表转字符串

  • 1.使用内置函数 str()
# 注意,转换之后,双引号会变为单引号
>>> list1 = ["aaa", 123, 'ccc', True]
>>> str1 = str(list1)
>>> print(type(str1))
<class 'str'>
>>> print(str1)
['aaa', 123, 'ccc', True]
>>>

上面直接使用 str(),是将整个列表转换为字符串,如果我们不想改变列表的类型,只是要将列表中所有元素转为字符串,那么可以借助列表推导式来实现。

# 注意,转换之后,双引号会变为单引号
>>> list1 = ["aaa", 123, 'ccc', True]
>>> str2 = [str(i) for i in list2]
>>> print(type(str2))
<class 'list'>
>>> print(str2)
['aaa', '123', 'ccc', 'True']
>>>
  • 2.使用 join() 进行拼接
>>> list3 = ['username=admin', 'passsword=123456']
>>> str3 = "&".join(list3)
>>> print(type(str3))
<class 'str'>
>>> print(str3)
username=admin&passsword=123456
>>>
  • 3.使用内置模块 json.dumps() 方法
# 这里列表中使用了单引号
>>> list4 = ['username=admin', 'passsword=123456']
>>> import json
>>> str4 = json.dumps(list4)
>>> print(type(str4))
<class 'str'>
>>> print(str4)
["username=admin", "passsword=123456"]
>>>

需要注意的是,按 json 的标准规范是使用双引号 "",因此在转换之后得到的json字符串是双引号的。

字符串--字典

字符串转字典

  • 1.使用内置函数 eval()
>>> str1 = "{'username':'admin', 'password':123456}"
>>> dict1 = eval(str1)
>>> print(type(dict1))
<class 'dict'>
>>> print(dict1)
{'username': 'admin', 'password': 123456}
>>>
  • 2.使用内置模块 json.loads() 方法
# str1 = "{'username':'admin', 'password':123456}"
# 因为 json.loads() 是将json格式字符串转换为python对象,而按 json 的标准规范应该使用双引号,如果使用单引号会导致报错
>>> str2 = '{"username":"admin", "password":123456}'
>>> import json
>>> dict2 = json.loads(str2)
>>> print(type(dict2))
<class 'dict'>
>>> print(dict2)
{'username': 'admin', 'password': 123456}
>>>
  • 3.使用内置模块 ast.literal_eval() 方法
>>> str3 = "{'username':'admin', 'password':123456}"
>>> import ast
>>> dict3 = ast.literal_eval(str3)
>>> print(type(dict3))
<class 'dict'>
>>> print(dict3)
{'username': 'admin', 'password': 123456}
>>>

我们发现,Python中已经有了内置函数 eval(),但现在却又出现个类似的 ast.literal_eval() 方法,二者的区别是什么呢?

这里主要是出于安全性的考虑,因为 ast.literal_eval() 会判断计算后的结果是不是合法的python类型,如果是则进行运算,否则就不进行运算,而 eval() 则不会管这些,即使字符串是一个命令,它也会进行解析。

因此,相比 eval() 函数, ast.literal_eval() 更加安全,更被 推荐使用

字典转字符串

  • 1.使用内置函数 str()
>>> dict1 = {'username': 'admin', 'password': 123456}
>>> str1 = str(dict1)
>>> print(type(str1))
<class 'str'>
>>> print(str1)
{'username': 'admin', 'password': 123456}
>>>
  • 2.使用内置模块 json.dumps() 方法
>>> dict2 = {'username': 'admin', 'password': 123456}
>>> import json
>>> str2 = json.dumps(dict2)
>>> print(type(str2))
<class 'str'>
>>> print(str2)
{"username": "admin", "password": 123456}
>>>

需要注意的是,按 json 的标准规范是使用双引号 "",因此在转换之后得到的json字符串是双引号的。

如果我们想让得到的字符串仍保持单引号,可以通过 replace() 方法来简单处理一下。

>>> dict3 = {'username': 'admin', 'password': 123456}
>>> import json
>>> str3 = json.dumps(dict3).replace("\"", "'")
>>> print(type(str3))
<class 'str'>
>>> print(str3)
{'username': 'admin', 'password': 123456}
>>>

字典--列表

字典转列表

  • 1.使用内置函数 list()
>>> dict1 = {"a": 1, "b": "2", "c": True}
>>> list1 = list(dict1.keys())
>>> print(list1)
['a', 'b', 'c']
>>> list2 = list(dict1.values())
>>> print(list2)
[1, '2', True]
>>>

列表转字典

  • 1.使用内置函数 dict(),将嵌套列表转换为字典
>>> list3 = [['a', 1], ['b', '2'], ['c', True]]
>>> dict2 = dict(list3)
>>> print(type(dict2))
<class 'dict'>
>>> print(dict2)
{'a': 1, 'b': '2', 'c': True}
>>>
  • 2.使用内置函数 zip(),将2个列表转换为字典
>>> list1 = ["a", 'b', "c", 'd', "f"]
>>> list2 = ["1", '2', "3", '4', "5"]
>>> dict1 = dict(zip(list1,list2))
>>> print(type(dict1))
<class 'dict'>
>>> print(dict1)
{'a': '1', 'b': '2', 'c': '3', 'd': '4', 'f': '5'}
>>>

如果2个列表的长度不一样时,那么就不展示多出来的元素。

>>> list1 = ["a", 'b', "c"]
>>> list2 = ["1", '2', "3", '4', "5"]
>>> dict1 = dict(zip(list1,list2))
>>> print(type(dict1))
<class 'dict'>
>>> print(dict1)
{'a': '1', 'b': '2', 'c': '3'}
>>>

原文地址:https://www.cnblogs.com/wintest/p/12543770.html

时间: 2024-10-09 14:21:27

Python3下字典、字符串及列表的相互转换的相关文章

python字符串与列表的相互转换

1.字符串转列表 2.列表转字符串 1. 字符串转列表 s ='hello python !'li = s.split(' ') #注意:引号内有空格print (li)输出:['hello', 'python', '!'] 2. 列表转字符串 li = ['hello', 'python', '!'] s = ' '.join(li) #注意:引号内有空格 print(s) 输出: hello python ! 原文地址:https://www.cnblogs.com/hokky/p/8440

python开发学习-day02(元组、字符串、列表、字典深入)

s12-20160109-day02 *:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom: 0 !important; } /* BLOCKS =============================================================================*/ p, blockquote, ul, ol, dl, table, pre { margin

what&#39;s the python之基本运算符及字符串、列表、元祖、集合、字典的内置方法

计算机可以进行的运算有很多种,运算按种类可分为算数运算.比较运算.逻辑运算.赋值运算.成员运算.身份运算.字符串和列表的算数运算只能用+和*,字典没有顺序,所以不能进行算数运算和比较运算.比较运算中==比较的是值,is比较的是id.比较运算只能在同种类型下进行比较.字符串的比较是按照顺序依次进行比较.逻辑运算的顺序先后为要用括号来表示. 基本运算符如下: 算术运算 以下假设a=10,b=20 比较运算 以下假设a=10,b=20 赋值运算 逻辑运算  成员运算 身份运算 what's the 内

python学习第二周(数据类型、字符串、列表、元祖、字典)

一.模块.库 Python的强大之处在于他有非常丰富和强大的标准库和第三方库,几乎你想实现的任何功能都有相应的Python库支持. 模块初始化:模块就是库,库可以是标准库或者是第三方库. sys模块 os模块 Sys.path 导入模块的时候,先从当前目录下面查找. 我们起名字时候不能和导入的模块名字相同. Python的第三方库 E:\\python_path\\base\\lib\\site-packages Python的标准库位置 E:\\python_path\\base Sys.ar

while循环,布尔类型,可变or不可变,数字,字符串,列表,元组,字典

while 循环 '''1.什么是循环? 循环即重复的过程 2.为什么要有循环 3.while循环的语法(又称之为条件循环) while 条件: 代码1 代码2 代码3 .... ''' # 注意:下述形式的死循环,会造成cpu的占用率过高# i=1# while True:# i+=1 #打印1-10# n=1# while True:# if n <= 10: #n=10# print(n)# n+=1# else:# break #打印1-10:改进1# n=1# while True:#

【Python基础知识】基本数据类型:数字、字符串、列表、元组、字典、集合

1.查看Python版本 python -V 2.Windows系统下使用命令行设置环境变量:path=%path%;D:\Python 3.几个重要的Python环境变量 PYTHONPATH PYTHONPATH是Python搜索路径,默认我们import的模块都会从PYTHONPATH里面查找. PYTHONSTARTUP Python启动后,先寻找PYTHONSTARTUP环境变量,然后执行此变量指定的文件中的代码. PYTHONCASEOK 加入PYTHONCASEOK的环境变量,就会

python_way ,day2 字符串,列表,字典,时间模块

python_way ,day2 字符串,列表,字典,时间模块 1.input: 2.0 3.0 区别 2.0中 如果要要用户交互输入字符串: name=raw_input() 如果 name=input() 是传什么就是对应的什么,想输入字符串需要加 “” 引号,如果要是不加就认为传入的是个变量. a="hahaha"user=input("shuru :")print(user) shuru :a hahaha 3.0中 只有 input() 了 所以在inpu

Python(二)-字符串、列表、字典 、元组、集合

版权声明: 本文作者为-陈鑫 本文的所有内容均来陈鑫总结,未经本人许可,禁止私自转发及使用. QQ: 499741233 E-mail: [email protected] 第1章 字符串处理 1.1 字符串转换 1.1.1 format() 字符串格式化 描    述: 1.花括号声明{}.用于渲染前的参数引用声明,花括号里面可以用数字代表引用参数的序号,或者变量直接引用. 2.从format参数引入的变量名. 3.冒号:为空格填充 4.字符位数声明. 5.千分位的声明. 6.变量类型的声明:

python基础之数字、字符串、列表、元组、字典

第二天Python基础二: 1.运算符: 判断某个东西是否在某个东西里面包含: in  为真 not in  为假 (1).算术运算符: 运算符 描述 实例 + 加  表示两个对象相加 a + b输出结果30 - 减  表示一个数减去另一个数 a - b输出结果-10 * 乘  两个数相乘或是返回一个被重复若干次的字符串 a * b输出结果200 / 除  两个数相除 b / a 输出结果2 ** 幂  返回一个数的n次幂 3 ** 3 输出结果27 % 取余  返回除法的余数 b % a 输出