首页 > 编程 > Python > 正文

Python基础:Python数据类型详解之字典与字符串

2019-11-06 06:57:23
字体:
来源:转载
供稿:网友

字符串

字符串也是不改变的,具体方法如下:

name.capitalize() #首字母大写name.casefold() #大写全部变小写>>> name='bolen'>>> name.capitalize()'Bolen'>>> name.casefold()'bolen'name.center() #定义宽度和添加的字符>>> name.center(50,'=')'======================bolen======================='name.count('bo') 统计 bo出现次数name.encode() 将字符串编码成bytes格式>>> new=name.encode()>>> type(new)<class 'bytes'>name.endswith("en") 判断字符串是否以 en结尾>>> 'Bolen/tZhang'.expandtabs(4)'Bolen Zhang 将/t转换成多长的空格 name.find('A') 查找A,找到返回其索引, 找不到返回-1 format : >>> msg = "my name is {}, and age is {}" >>> msg.format("bolen",32) 'my name is bolen, and age is 32' >>> msg = "my name is {1}, and age is {0}" >>> msg.format("bolen",32) 'my name is 32, and age is bolen' >>> msg = "my name is {name}, and age is {age}" >>> msg.format(age=32,name="bolen") 'my name is ale, and age is 22'format_map >>> msg.format_map({'name':'alex','age':22}) 'my name is alex, and age is 22' #输入字典msg.index('a') 返回a所在字符串的索引>>> 'adf9'.isalnum()True>>> '9'.isalnum()True>>> '9'.isdigit() 是否整数name.isnumeric name.isPRintablename.isspacename.istitle>>> name.title()'Bo Le Na'>>> name1=name.title()>>> name1'Bo Le Na'>>> name1.istitle()Truename.isupper "|".join(['alex','jack','rain'])'alex|jack|rain'maketrans >>> intab = "aeiou" #This is the string having actual characters. >>> outtab = "12345" #This is the string having corresponding mapping character >>> trantab = str.maketrans(intab, outtab) #先自己制作转换关系表。 >>> str = "this is string example" >>> str.translate(trantab) 'th3s 3s str3ng 2x1mpl2' msg.partition('is') 输出 ('my name ', 'is', ' {name}, and age is {age}') >>> "alex li, chinese name is lijie".replace("li","LI",1) 'alex LI, chinese name is lijie' msg.swapcase 大小写互换 >>> msg.zfill(40) > """方法返回指定长度的字符串,原字符串右对齐,前面填充0。"""'00000my name is {name}, and age is {age}'>>> 'Hello world'.ljust(20,"-")'Hello world---------'>>> 'Hello world'.rjust(20,"*")'*********Hello world'name_define='tWst@123'>>> name_define.isidentifier()False #检测一段字符串可否被当作标志符,即是否符合变量命名规则 def strip(self, chars=None): """ 移除两端空白 """>>> name=' bole '>>> name' bole '>>> name.strip()'bole'

字典

字典是键值对的无序集合,且key不能重复。

定义

>>> userdb{'user002': 'kobe', 'user003': 'kity', 'user001': 'bolen', 'user004': 'tom'}

增加

>>> userdb['user005']='baby'>>> userdb{'user002': 'kobe', 'user003': 'kity', 'user001': 'bolen', 'user004': 'tom', 'user005': 'baby'}

修改

>>> userdb['user005']='angela'>>> userdb{'user002': 'kobe', 'user003': 'kity', 'user001': 'bolen', 'user004': 'tom', 'user005': 'angela'}

删除

字典的删除有三种方式:pop,del和popitem,其中前两种较常用。最后一种由于是随机删除元素的,一般来说并没什么卵用。>>> userdb.pop('user003')'kity'>>> userdb{'user002': 'kobe', 'user001': 'bolen', 'user004': 'tom', 'user005': 'angela'}>>> del userdb['user004']>>> userdb{'user002': 'kobe', 'user001': 'bolen', 'user005': 'angela'}>>> userdb.popitem()('user002', 'kobe')>>>

查找

>>> >>> 'user002' in userdb #标准用法True>>> userdb.get('user004')'tom'>>> userdb['user004']'tom'>>> userdb.get('user005')#注意get不到key就没返回值,而下面的取法,get不到key就会报错。>>> userdb['user005']Traceback (most recent call last): File "<pyshell#165>", line 1, in <module> userdb['user005']KeyError: 'user005'>>>

多级嵌套

av_catalog = { "欧美":{ "www.youporn.com": ["很多免费的,世界最大的","质量一般"], "www.pornhub.com": ["很多免费的,也很大","质量比yourporn高点"], "letmedothistoyou.com": ["多是自拍,高质量图片很多","资源不多,更新慢"], "x-art.com":["质量很高,真的很高","全部收费,屌比请绕过"] }, "日韩":{ "tokyo-hot":["质量怎样不清楚,个人已经不喜欢日韩范了","听说是收费的"] }, "大陆":{ "1024":["全部免费,真好,好人一生平安","服务器在国外,慢"] }}av_catalog["大陆"]["1024"][1] += ",可以用爬虫爬下来"print(av_catalog["大陆"]["1024"])#ouput ['全部免费,真好,好人一生平安', '服务器在国外,慢,可以用爬虫爬下来']

其他

#获取keys>>> userdb.keys()dict_keys(['user002', 'user003', 'user001', 'user004'])#获取values>>> userdb.values()dict_values(['kobe', 'kity', 'bolen', 'tom'])#设置默认值,注意此方法是新加,不可修改。>>> userdb{'user002': 'kobe', 'user003': 'kity', 'user001': 'bolen', 'user006': '希特勒', 'user004': 'tom'}>>> userdb.setdefault('user006','bolenzhang')'希特勒'>>> userdb.setdefault('user006','bolenzhang')'希特勒'>>> userdb{'user002': 'kobe', 'user003': 'kity', 'user001': 'bolen', 'user006': '希特勒', 'user004': 'tom'}>>> userdb.setdefault('user001','bolenzhang')'bolen'>>> userdb{'user002': 'kobe', 'user003': 'kity', 'user001': 'bolen', 'user006': '希特勒', 'user004': 'tom'}#update>>> newb={'user110':'michal',9:6,1:1}>>> newb{9: 6, 'user110': 'michal', 1: 1}>>> userdb.update(newb)>>> userdb{1: 1, 'user001': 'bolen', 'user003': 'kity', 'user006': 'xitele', 'user004': 'tom', 9: 6, 'user002': 'kobe', 'user110': 'michal'}#获取items>>> userdb.items()dict_items([(1, 1), ('user001', 'bolen'), ('user003', 'kity'), ('user006', 'xitele'), ('user004', 'tom'), (9, 6), ('user002', 'kobe'), ('user110', 'michal')])#通过一个列表生成默认dict,有个没办法解释的坑,少用吧这个>>> dict.fromkeys([1,2,3],'test'){1: 'test', 2: 'test', 3: 'test'}

字典的循环

#方法1>>> for key in userdb: print(userdb[key])1bolenkityxiteletom6kobemichal>>> userdb{1: 1, 'user001': 'bolen', 'user003': 'kity', 'user006': 'xitele', 'user004': 'tom', 9: 6, 'user002': 'kobe', 'user110': 'michal'}#方法2>>> for k,v in userdb.items(): print (k,v)1 1user001 bolenuser003 kityuser006 xiteleuser004 tom9 6user002 kobeuser110 michal

集合

集合是一个无序的,不重复的数据组合,它的主要作用如下:

1、去重,把一个列表变成集合,就自动去重了 2、关系测试,测试两组数据之前的交集、差集、并集等关系

# 去重>>> b=[1,1,2,3,4,4]>>> s = set(b)>>> s{1, 2, 3, 4}s = set([3,5,9,10]) #创建一个数值集合 t = set("Hello") #创建一个唯一字符的集合 a = t | s # t 和 s的并集 b = t & s # t 和 s的交集 c = t – s # 求差集(项在t中,但不在s中) d = t ^ s # 对称差集(项在t或s中,但不会同时出现在二者中) 基本操作: t.add('x') # 添加一项 s.update([10,37,42]) # 在s中添加多项 使用remove()可以删除一项: t.remove('H') len(s) set 的长度 x in s 测试 x 是否是 s 的成员 x not in s 测试 x 是否不是 s 的成员 s.issubset(t) s <= t 测试是否 s 中的每一个元素都在 t 中 s.issuperset(t) s >= t 测试是否 t 中的每一个元素都在 s 中 s.union(t) s | t 返回一个新的 set 包含 s 和 t 中的每一个元素 s.intersection(t) s & t 返回一个新的 set 包含 s 和 t 中的公共元素 s.difference(t) s - t 返回一个新的 set 包含 s 中有但是 t 中没有的元素 s.symmetric_difference(t) s ^ t 返回一个新的 set 包含 s 和 t 中不重复的元素 s.copy() 返回 set “s”的一个浅复制
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表