字符串与字典互转

将字符串转为字典

ref:Python 如何将字符串转为字典

在工作中遇到一个小问题,需要将一个 python 的字符串转为字典,比如字符串:

user_info = '{"name" : "john", "gender" : "male", "age": 28}'

我们想把它转为下面的字典:

user_dict = {"name" : "john", "gender" : "male", "age": 28}

使用 ast.literal_eval 进行转换

import ast
user = '{"name" : "john", "gender" : "male", "age": 28}'
user_dict = ast.literal_eval(user)
user_dict
{'gender': 'male', 'age': 28, 'name': 'john'}
user_info = "{'name' : 'john', 'gender' : 'male', 'age': 28}"
user_dict = ast.literal_eval(user)
user_dict
{'gender': 'male', 'age': 28, 'name': 'john'}

拼接字符串

ref:Python str join方法:拼接字符串

  • 描述

str.join()方法是Python的字符串方法,用于将序列中的元素以指定的字符串连接成一个新的字符串。

  • 语法
string.join(sequence)
名称说明备注
string字符串连接符可省略
sequence要连接的元素序列不可省略的参数,序列的元素是字符串
  • 举例
  1. 元素序列是列表
a = '!@'.join(['Fusion', 'Sphere', 'Cloud'])
a
'Fusion!@Sphere!@Cloud'
  1. 元素序列是元组
" ".join(('China', 'Japan', 'USA', 'UK'))
'China Japan USA UK'
  1. 元素序列是集合
''.join({'C', 'h', 'i', 'n', 'a'})
'ahCni'

可以看出,输出的字符顺序与集合中元素的顺序不是保持一致的。

  1. 元素序列是字典
' ~ '.join({'Asia':'China', 'Europe':'UK'})
'Asia ~ Europe'

可以看出,如果序列是字典,拼接的字符是字典的键。

  1. 元素序列是字符串
    当元素序列仅仅是字符串时,join函数会将字符串中的每一个单个字符抽取出来,与连接符组合。
', '.join('happy')
'h, a, p, p, y
  • 注意事项
  1. 要连接的字符串序列(参数)必须是字符串
    join函数的参数应该是全部由字符串构成的可迭代对象。当可迭代对象不全是由字符串构成的时,Python会报错TypeError。
  2. 字符串连接符可省略
    字符串连接符可以省略(空字符串)。当字符串连接符为空时,序列中的所有字符串都将连接成一个字符串。
  3. join()方法和 + 号都可以拼接字符串,但是join拼接速度更快
    那么为什么使用join()方法时间会更快一些呢?

因为在Python中字符串是不可变对象,修改字符串就得将原字符串中的值复制,开辟一块新的内存,加上修改的内容后写入到新内存中,以达到“修改”字符串的效果。在使用“+”拼接字符串时,正是使用了重复性的复制、申请新内存、写入值到新内存的工作一遍遍的将字符串的值修改。而使用join()方法拼接字符串时,会先计算总共需要申请多少内存,然后一次性申请所需内存并将字符串复制过去。这样便省去了重复性的内存申请和写入,节省了时间消耗。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值