python学习day06--02字典增删差改以及字符串的一些方法
不可变类型:整型,字符串,元组
可变类型:列表,字典
字典:增删查改
①字典键必须是不可变类型
②无序的
③唯一键
# 字典 dictionary # 创建 dic = {'name': 'wwh', 'age': 23, 'is_handsome': True, 'wife': 'lq', 'hobby': 'python'} print(dic) print(dic['name']) dic1 = {} dic2 = dict((('name', 'wwh'), ('age', 23),)) # 最后一个逗号可有可无,逗号就是告诉python这是一个序列 print(dic2) dic3 = dict([['name', 'wwh'], ['age', 23],]) # 中括号小括号都无所谓,只要能让python知道这是一个序列即可 # 但不建议这么写,pycharm会报提示 print(dic3) # 增加 dic1['name'] = 'wwh' print(dic1) return1 = dic1.setdefault('name', 'lq') # 先寻找name键,若有则不改变任何东西,若没有则创建 return2 = dic1.setdefault('age', 23) # 没有age,就会增加一个age键 #setdefault会返回键对应的值,没有则增加,有则直接返回原有的 print(return1) # 输出wwh print(return2) # 输出23 # 查找 print(dic1['name']) # 查询有哪些键 print(dic1.keys()) # 查询有哪些值 print(dic1.values()) print(type(dic1.keys())) # 修改 dic1['name'] = 'igenius' print(dic1) dic4 = {'name': 'ig', 'hobby': 'python'} # update将另一个字典添加到原字典 # 若原字典有的键,则更新键对应的值,若原字典没有的键,则增加没有的键以及对应的值 dic4.update(dic1) print(dic4) # 删除 del dic4['name'] # 将name的键值对删除 print(dic4) dic1.clear() # 清空字典 print(dic1) a = dic4.pop('hobby') # 将hobby的键值对删除,并且返回该键对应的值 print(dic4) print(a) #输出结果 python dic5 = {'name': 'ig', 'hobby': 'python', 'age': 33} b = dic5.popitem() # 随机删除一个键值对,并以元组方式返回值 print(dic5) print(b) # 输出结果('age', 33) print(type(b)) # 输出结果<class 'tuple'> # 删除整个字典 del dic5 # print(dic5) # NameError: name 'dic5' is not defined # 其他操作以及涉及到的方法 # 创建 dic6 = dict.fromkeys(['age', 'bigger', 'smaller'], '25') print(dic6) # {'age': '25', 'bigger': '25', 'smaller': '25'} dic6['age'] = '29' print(dic6) # {'age': '29', 'bigger': '25', 'smaller': '25'} dic6 = dict.fromkeys(['age', 'bigger', 'smaller'], ['25','28']) print(dic6) # {'age': ['25', '28'], 'bigger': ['25', '28'], 'smaller': ['25', '28']} dic6['age'][1] = '29' print(dic6) # {'age': ['25', '29'], 'bigger': ['25', '29'], 'smaller': ['25', '29']}
字典的嵌套、排序、遍历
# 嵌套 dic_nest = { 'pen_class': {'name': 'wwh', 'age': 12}, 'pencil_class': {'name': 'ig', 'age': 16}, 'draw_class': {'name': 'iGenius', 'age': 13}, } dic_nest['pencil_class']['name'] = 'lq' print(dic_nest) # 排序 dic = {4: 333, 1: 542, 9: 46457} print(sorted(dic.items())) print(sorted(dic.values())) print(sorted(dic.keys())) # 输出结果 # [(1, 542), (4, 333), (9, 46457)] # [333, 542, 46457] # [1, 4, 9] # 字典遍历 for i in dic: # 效率高 print(i) # 默认遍历字典的键 print(dic[i]) for i, v in dic.items(): # 效率低 print(i, v)
字符串的方法
a = '123' b = '456' c = a + b # 拼接 print(c) print('hello' * 2) # 连续的重复的输出某一个字符串 c = ''.join([a, '123']) print(c) print(c.count('1')) # 统计某一元素在字符串中的个数 d = 'hello world' print(d.capitalize()) # 字符串首个字符首字母大写 e = 'HOW AR\tE YOU' print(e.casefold()) # 字符串全部字符小写 print(e.center(30, '-')) # 30代表整个字符串的长度,并将原字符串居中,前后使用'-'补足 # 前后'-'数量不一致时,前少后多 # 输出结果 ---------HOW ARE YOU---------- ''' print(e.encode()) # 应该是修改编码方式,默认是UTF-8 ''' # 判断是否以某一个字符或者字符串结尾或者开头 print(d.endswith('d')) # True print(d.endswith('ds')) # False print(d.startswith('h')) # True print(e) # 输出结果HOW AR E YOU print(e.expandtabs(tabsize=20)) # e中有个\t制表符,默认为8个字符,通过这个函数可设置为任意数量的字符 # 输出结果HOW AR E YOU f = 'hello world,hello{age} world!{name}' print(f) print(f.find('ll')) # 查找某一个子字符串在该字符串中第一个出现的位置,并返回索引值,返回-1则表示没有 print(f.format(name='wwh', age=32)) # 格式化输出f,括号内直接赋值 print(f.format_map({'name': 'ig', 'age': 34})) # 格式化输出f,括号内直接赋值,括号内插入一个字典 print(f.isdigit()) # 判断是否像数字,必须是个整型 print('23213'.isnumeric()) # 同上 print(f.index('l')) # 和find一样,返回一个索引值,唯一的区别是,当查找内容没有时,index会返回一个错误信息 i = 'dasda2321321' print(i.isalnum()) # 返回布尔,是否包含字母和数字 print('321321'.isdecimal()) # 判断是否是十进制的数 print('23das'.isidentifier()) # 判断是不是一个非法变量 print('asd'.islower()) # 判断是不是全小写 print('asd'.isupper()) # 判断是不是全大写 print(' '.isspace()) # 判断是不是空格 print('asd'.istitle()) # 判断每个单词的首字母是不是大写 print('ASD'.lower()) # 将字符串中的字符大写变小写 print('dsf'.upper()) # 将字符串中的字符小写变大写 print('AFDsda'.swapcase()) # 将字符串中大写变小写,小写变大写 print('AFDsda'.ljust(50, '#')) # 设置长度为50,将字符串靠左,并在后面用#补全 print('AFDsda'.rjust(50, '#')) # 设置长度为50,将字符串靠右,并在后面用#补全 print('\t AFDsda\n'.strip()) # 将字符串左右两边的空格、制表符、换行全个去除 print('\t AFDsda\n'.rstrip()) # 将字符串右边的空格、制表符、换行全个去除 print('\t AFDsda\n'.lstrip()) # 将字符串左边的空格、制表符、换行全个去除 print('my title title'.replace('tle', 'abc', 1)) # 将字符串中第一个参数的字符替换成第二个 # 若有多个,默认全部替换,最后一个参数设置替换几次,输出结果 print('hello world world'.split(' ')) # 从左向右以空格为依据切片,不保留原空格,并返回一个列表 print('hello world world'.rsplit(' ')) # 从右向左以空格为依据切片字符,但原字符串中的空格就没有了 # 输出结果['hello', 'world', 'world'] print('hello world world'.split(' ', 1)) # 默认为全部分割,加了一个1,设置只分割一次 print('hello world world'.rpartition('l')) # 从右开始以'l'切片,但扔保留'l',只分割以此 print('he\nll\ro wo\r\nld'.splitlines(keepends=True)) # 按照行('\r', '\r\n', \n')分隔,返回一个包含各行作为元素的列表 # 如果参数 keepends 为 False,不包含换行符,如果为 True,则保留换行符。 print('hello world'.title()) # 将每个单词的首字母变成大写,按照title格式 ''' 以下为python2中的实例,python3还有待研究 from string import maketrans intab = "aeiou" outtab = "12345" trantab = maketrans(intab, outtab) str1 = "this is string example....wow!!!" print(str1.translate(trantab, 'xm')) # 根据给出的对应关系替换以及删除不想要的字符 '''