day02-字符串、字典

1.1  字符串常用操作

 1 name = "zhou qiong jie"
 2 
 3 print(name.capitalize())  #将首字母大写
 4 Zhou qiong jie
 5 print(name.count("o"))   #统计有多少指定字符
 6 2
 7 print(name.center(50,"-"))  #打印50字符,不够的话用-,在两头补全
 8 
 9 print(name.endswith("ie")) #判断是否以它结尾
10 True
11 print(name.find("qiong"))  #显示字符位置
12 5
13 print(name[name.find("qiong"):]) #对字符串进行切片print(name[5:])
14 qiong jie

 1 name = "my name is {name} and I am {year} old! "
 2 
 3 print(name.format(name='zhouqiongjie',year=23))
 4 my name is zhouqiongjie and I am 23 old!
 5 print(name.format_map({'name':'zhouqiongjie','year':23})) #一一映射对应
 6 
 7 print('ab123'.isalnum())  #判断是否是阿拉伯字符
 8 True
 9 print('abD'.isalpha())  #判断是否为纯英文字符
10 True
11 print('ab123'.isdecimal()) #判断是否为十进制
12 False
13 print('ab123'.isdigit())  #判断是否为整数
14 False
15 print('ab123'.isidentifier()) #判断是否是合法的标识符(合法的变量)
16 True
17 print('ab123'.islower()) #判断是否都是小写
18 True
19 print('ab123'.isspace())#判断是否是空格
20 False
21 print('ab123'.istitle())#每个字符串首字母大写
22 False
23 print('ab123'.isprintable()) #判断是否可以打印  如:tty file不能打印
24 True
25 print('ab123'.isupper())#判断是否为大写
26 False
27 print('+'.join(['1','2','3']))#将列表中的值,进行拼接
28 1+2+3
29 print(name.ljust(50,'*'))#打印50个字符,不够就用指定字符在后面补全
30 
31 print(name.rjust(50,'*'))#打印50个字符,不够就用指定字符在前面补全
32 
33 print(name.lower()) #把大写变小写
34 
35 print(name.upper()) #把小写变大写
36 
37 print(name.strip()) #去两边空格或回车
38 
39 print(name.lstrip()) #去左边的空格或回车
40 
41 print(name.rstrip()) #去右边的空格或回车

1 p = str.maketrans("abcdef",'123456') #形成对应关系,类似加密解密,密码本
2 
3 print("zhouqiongjie".translate(p))
4 zhouqiongji5

 1 print('zhouqiongjie'.replace('o','O',1)) #将指定字符的第一个替换
 2 zhOuqiongjie
 3 print('zhouqiongjie'.rfind('o'))#找到指定字符的下标,显示最右边
 4 6
 5 print('zhou qiong jie'.split())#把字符串按照空格切分成列表
 6 ['zhou','qiong','jie']
 7 print('zhou qiong jie'.split('o'))#把字符串按照o切分成列表
 8 ['zh','u qi','ng jie']
 9 print('zhou
qiongjie'.splitlines())#把字符串按照换行符切分成列表
10 ['zhou','qiongjie']
11 print('Zhou qiong jie'.swapcase())#大小写互转 zHOU QIONG JIE
12 print('zhou qiong jie'.startswith('zhou')) #判断是否以‘zhou’开头,是返回True,否返回Fales
13 print('zhou qiong jie'.zfill(50))#打印50个字符,不够用0补齐,从左边补齐

1.2  字典操作

字典一种key - value 的数据类型,使用就像我们上学用的字典,通过笔划、字母来查对应页的详细内容。

字典的特性:

  • dict是无序的
  • key必须是唯一的,so 天生去重

字典的增删改查

#字典
 1 info = {
 2 
 3     'stu001':"qiongjie",
 4 
 5     'stu002':"zhouqiongjie",
 6 
 7     'stu003':"zhangdan",
 8 
 9     'stu004':"dandan"
10 
11 }
12 
13 info['stu001']="琼杰" #修改
14 
15 info['stu005']='张丹' #增加
16 
17 info.pop('stu003')   #删除
18 
19 del info['stu004']   #删除
20 
21 print(info.get('stu004'))  #查询指定值,存在就显示,不存在就显示none
22 
23 print('stu001' in info)  #判断是否存在这个key,存在就显示true,不存在就显示false
24 
25 print(info)#查询
26 
27 print(info.values()) #只显示值,生成一个列表
28 
29 print(info.keys()) #只显示key,生成一个列表
30 
31 

setdefault()表示去取字典中的key,如果取不到,则设置新值,相反如果取到,则返回原有默认值
 1 >>> stu_info = {"zhangsan":23,"lisi":18,"zhou":18}
 2 #设置不存在的key
 3 >>> stu_info.setdefault("wanger",25)
 4 25
 5 >>> stu_info
 6 #输出结果
 7 {'wanger': 25, 'zhangsan': 23, 'zhou': 18, 'lisi': 18}
 8 #设置存在的key
 9 >>> stu_info.setdefault("zhou",23)
10 18
11 >>> stu_info
12 #输出结果
13 {'wanger': 25, 'zhangsan': 23, 'zhou': 18, 'lisi': 18}
###这是个坑###
 1 c =dict.fromkeys([1,2,3]) #初始化一个字典
 2 
 3 print(c)
 4 
 5 
 6 
 7 d =dict.fromkeys([1,2,3],[1,{"name":"alex"},333]) #三个key,共享一个值
 8 
 9 d[1][1]['name'] = 'haha' #当修改其中的一个值时,其实三个都发生了变化
10 
11 print(d)

字典合并

update()是把两个字典合并成一个新的字典,中间有交叉的key,更新替换成新值,没有交叉就直接创建

 1 info = {
 2 
 3     'stu001':"qiongjie",
 4 
 5     'stu002':"zhouqiongjie",
 6 
 7     'stu003':"zhangdan",
 8 
 9     'stu004':"dandan"
10 
11 }
12 
13 
14 
15 info2 = {
16 
17     "stu001":"alex",
18 
19     1:3,
20 
21     2:5
22 
23 }
24 
25 info.update(info2) #将两个字典合并
26 
27 print(info)
28 
29 print(info.items()) #将字典转换成一个大的列表

clear() #清空字典

字典的循环:

 1 info = {
 2 
 3     'stu001':"qiongjie",
 4 
 5     'stu002':"zhouqiongjie",
 6 
 7     'stu003':"zhangdan",
 8 
 9     'stu004':"dandan"
10 
11 }
12 
13 #字典的循环,两种方式
14 方法1:
15 for i in info:   #建议使用,更加高效
16 
17     print(i,info[i])
18 
19 print("-----------------")
20 方法2:
21 for k,v in info.items():  #需要将字典转换成列表,花费时间较长
22 
23     print(k,v)

 对比小结:

①方法1的效率比方法2的效率高很多

②方法1是直接通过key取value

③方法2是先把字典转换成一个列表,再去取值

④当数据量比较大的时候,用第二种方法时,字典转换成列表的这个过程需要花大量的时间老转换,当然数据量不大,没有关系,效率差不多

 多级字典嵌套及操作:

Key最好不要使用中文,可能因为编码,取不出来值

 1 scenery_catalog = {
 2 
 3     "北京":{
 4 
 5         "beijing":["故宫博物院","颐和园","鸟巢"]
 6 
 7     },
 8 
 9     "上海":{
10 
11         "shanghai":["城隍庙","豫园","外滩"]
12 
13     },
14 
15     "湖北":{
16 
17         "wuhan":["东湖绿道","黄鹤楼","光谷"]
18 
19     }
20 
21 }
22 
23 
24 
25 scenery_catalog["湖北"]["wuhan"][0] = "汉口江滩" #修改
26 
27 print(scenery_catalog)


原文地址:https://www.cnblogs.com/Study-Blog/p/6478713.html