Python Day2 Learning record
一、python初始化模块
Python的强大之处在于他有非常丰富和强大的标准库和第三方库,几乎你想实现的任何功能都能有相应的python库支持,以后的课程中会深入讲解常用到的各种库,现在,我们先来象征性的血2个简单的。
(库=模块)
导入模块用import
sys模块
1 import sys 2 print(sys.path) #打印pthon环境变量 3 4 #argv方法,系统传参数 5 cat sys_mod.py 6 import sys 7 print sys.argv[1] 8 9 #取第一个模块,结果等heloo 10 # python sys_mod.py hello worl abu 11 hello
os模块
1 import os 2 #os.system('dir') #os.system方法,只执行命令,不保存结果 3 cmd_res = os.popen('dir').read() #使用os.popen方法,可以把结果保存到内存中,然后使用.read()方法把结果取出来 4 #不适用read()方法,结果是无法从内存中读出来的 5 print("-->",cmd_res) 6 7 #输出的结果: 8 G:\python\day1 的目录 9 10 2017/07/21 17:51 <DIR> . 11 2017/07/21 17:51 <DIR> .. 12 2017/07/21 10:13 0 file_lock.txt 13 2017/07/21 15:39 45 hellow.py.txt 14 2017/07/21 14:53 2,135 lgoin作业.py 15 2017/07/21 14:11 5 lock_file.txt 16 2017/07/21 16:50 <DIR> mknew 17 2017/07/20 17:34 25 passwdlist.txt 18 2017/07/21 17:51 441 sys.py 19 2017/07/21 15:41 216 test.txt 20 2017/07/21 09:30 34 username_file.txt 21 2017/07/21 11:32 34 user_pass.txt 22 2017/07/21 14:11 136 var.py 23 2017/07/21 11:44 2,457 var2.py 24 11 个文件 5,528 字节 25 3 个目录 61,008,166,912 可用字节 26 27 28 29 #os.mkdir方法,创建目录 30 os.mkdir("new_dir")
二、数据运算
逻辑运算
1 and 布尔“与” 两个条件成立返回True 2 or 布尔“或” 两个条件有一个成立返回True 3 not 布尔“非” 4 in 布尔“真” 5 6 >>> a = [1,2,3,4] 7 >>> if 5 not in a :print 'ss' 8 ss 9 10 如果5不在a里面就打印ss 11 如果5在里面就不打印,也就是not 反义词的意思 12 13 in 跟not正好相反,如果5不在里面就不打印,在里面就打印,类型== 14 15 is和is not 16 先说is is就是判断类型是否为相同,相同返回True,否则返回False, is not正好相反 17 18 >>> a 19 [1, 2, 3, 4] 20 >>> type(a) 21 <type 'list'> 22 >>> type(a) is list 23 True 24 >>> type('a') is str 25 True
三元运算
语法:result =值1 if条件 else 值2
1 下面的语句解释: 2 a如果大于b 那d就等于a,否则等于c,因为不大于所以等于5 3 >>> a,b,c = 1,3,5 4 >>> d = a if a>b else c 5 >>> d 6 5 7 8 a如果小于b,那就d就等于a,否则等于c,因为a小于b所以等于a,这就是三元预算(这一段要仔细琢磨) 9 >>> d = a if a<b else c 10 >>> d 11 1
bytes数据类型
Python3 最重要的新特性大概要算是对文本和二进制数据作了更为清晰的区分。文本总是Unicode,有str类型表示,二进制数据则由bytes类型表示。python3 不会以任意隐式的方式混用str和bytes,正式这使得两者的区分特别清晰。你不能拼接字符串和字节包,也无法在字节包里搜索字符串(反之亦然),也不能将字符串传入参数为字节包的函数(反之亦然)。这是件好事。
字符串转换成二进制方法
encode(编码)
decode(解码)
1 msg = "我爱广州" 2 print(msg) 3 print(msg.encode("utf-8")) 4 5 字符串转成二进制主要是:encode() 6 输出结果(b=bytes): 7 我爱广州 8 b'\xe6\x88\x91\xe7\x88\xb1\xe5\xb9\xbf\xe5\xb7\x9e' 9 10 二进制转回字符串,主要是:decode() 11 msg = "我爱广州" 12 print(msg) 13 print(msg.encode("utf-8")) 14 print(msg.encode("utf-8").decode("utf-8")) 15 16 输出结果: 17 我爱广州 18 b'\xe6\x88\x91\xe7\x88\xb1\xe5\xb9\xbf\xe5\xb7\x9e' 19 我爱广州
原理图:
四、列表,元组操作
原文:http://www.cnblogs.com/alex3714/articles/5717620.html
定义一个列表,根据列表下标取一个值,两个值
1 names = ["ZhangYang","Guyun","XiangPeng","XuLiangchen"] 2 print(names[3]) 3 4 >>>XuLiangchen
1 names = ["ZhangYang","Guyun","XiangPeng","XuLiangchen"] 2 print(names[3],names[0]) 3 4 >>>XuLiangchen ZhangYang
列表切片,从1开始切,切到3(但是不包括3),切片,是使用冒号:切分的。
1 names = ["ZhangYang","Guyun","XiangPeng","XuLiangchen"] 2 print(names[1:3]) 3 4 >>>['Guyun', 'XiangPeng']
1 names = ["ZhangYang","Guyun","XiangPeng","XuLiangchen"] 2 print(names[-1],names[-2]) 3 >>>XuLiangchen XiangPeng
-1 -2 表示从后面开始数起
以下示例:从-2开始切到-1,-1是最后一个值,可以不用写,names[:3]等于names[0:3]
1 names = ["ZhangYang","Guyun","XiangPeng","XuLiangchen"] 2 print(names[-2:]) 3 print(names[:3]) 4 5 >>>['XiangPeng', 'XuLiangchen'] 6 >>>['ZhangYang', 'Guyun', 'XiangPeng']
列表追加names.append(‘值')
names = ["ZhangYang","Guyun","XiangPeng","XuLiangchen"] names.append("LeiHaidong") print(names) >>>['ZhangYang', 'Guyun', 'XiangPeng', 'XuLiangchen', 'LeiHaidong'] #append 中文翻译,追加,也就是追加到列表最后
插入,names.insert(下标,‘value1’)
1 names = ["ZhangYang","Guyun","XiangPeng","XuLiangchen"] 2 names.insert(1,"ChenRonghua") 3 print(names) 4 >>>['ZhangYang', 'ChenRonghua', 'Guyun', 'XiangPeng', 'XuLiangchen']
更改,names[下标]=“value”
1 names = ["ZhangYang","Guyun","XiangPeng","XuLiangchen"] 2 names[2]="ChenRonghua" 3 print(names) 4 >>>['ZhangYang', 'Guyun', 'ChenRonghua', 'XuLiangchen']
删除,有三种方法
方法1:names.remove("value") 删除匹配值
1 names = ["ZhangYang","Guyun","XiangPeng","XuLiangchen"] 2 names.remove("Guyun") 3 print(names) 4 5 >>>['ZhangYang', 'XiangPeng', 'XuLiangchen']
方法2:del names[下标] ,把匹配的下标删除掉, del names 则是直接把整个列表删除
1 names = ["ZhangYang","Guyun","XiangPeng","XuLiangchen"] 2 del names[2] 3 print(names) 4 5 >>>['ZhangYang', 'Guyun', 'XuLiangchen']
方法3: names.pop()不输入下标,默认删除最后一个值,names.pop(2)删除下标2的值
1 #names.pop()不输入下标,默认删除最后一个值 2 names = ["ZhangYang","Guyun","XiangPeng","XuLiangchen"] 3 names.pop() 4 print(names) 5 6 >>>['ZhangYang', 'Guyun', 'XiangPeng'] 7 8 #names.pop(2)删除下标2的值 9 ___________________________________________ 10 names = ["ZhangYang","Guyun","XiangPeng","XuLiangchen"] 11 names.pop(2) 12 print(names) 13 14 >>>['ZhangYang', 'Guyun', 'XuLiangchen']
或许列表下标,names.index('value')
1 #找下标 2 names = ["ZhangYang","Guyun","XiangPeng","XuLiangchen"] 3 print(names.index("Guyun")) 4 5 >>>1 6 7 ___________________________________ 8 #把下标里对应的值取出来 9 names = ["ZhangYang","Guyun","XiangPeng","XuLiangchen"] 10 print(names[names.index("Guyun")])
列表计数:names.count('value')
1 names = ["ZhangYang","Guyun","XiangPeng","XuLiangchen"] 2 names.insert(2,'abu') 3 names.insert(2,'abu') 4 5 print(names.count('abu')) 6 7 >>>2
清空列表:names.clear()
1 names = ["ZhangYang","Guyun","XiangPeng","XuLiangchen"] 2 names.clear() 3 print(names) 4 >>>[]
列表整合,排序,反转
#两个列表整合成一个列表,names.extend(列表2) names = ["ZhangYang","Guyun","XiangPeng","XuLiangchen"] a=['1','2','3'] names.extend(a) print(names) >>> ['ZhangYang', 'Guyun', 'XiangPeng', 'XuLiangchen', '1', '2', '3']
排序:列表排序 names.sort() 排序的顺序,特殊字符——数字——大写字母——小写字母(注意:python3不同类型不可以排序,如,字符串跟数字,存在同一个列表中不可以排序)
1 names = ["ZhangYang","Guyun","aiangPeng","XuLiangchen"] 2 a=['1','2','3'] 3 names.extend(a) 4 names.sort() 5 print(names) 6 #extend中文翻译整合,合并 7 >>>['1', '2', '3', 'Guyun', 'XuLiangchen', 'ZhangYang', 'aiangPeng']
反转:names.reverse(),也就是把列表反转过来
1 names = ["ZhangYang","Guyun","aiangPeng","XuLiangchen"] 2 a=['1','2','3'] 3 names.extend(a) 4 names.sort() 5 names.reverse() 6 print(names) 7 8 >>>['aiangPeng', 'ZhangYang', 'XuLiangchen', 'Guyun', '3', '2', '1']
列表copy,name2 = names.copy()
#复制一份列表 names = ["ZhangYang","Guyun","aiangPeng","XuLiangchen"] name2 = names.copy() print(names) print(name2) >>>['ZhangYang', 'Guyun', 'aiangPeng', 'XuLiangchen'] >>>['ZhangYang', 'Guyun', 'aiangPeng', 'XuLiangchen'] #复制一份name2后,我把names改了 names = ["ZhangYang","Guyun","aiangPeng","XuLiangchen"] name2 = names.copy() names[2]="张德润" print(names) print(name2) >>>['ZhangYang', 'Guyun', '张德润', 'XuLiangchen'] >>>['ZhangYang', 'Guyun', 'aiangPeng', 'XuLiangchen']
列表潜copy,深copy
1、潜copy的四种方式
1)name1 = copy.copy(names)
2)name2 = names.copy()
3)name3 = names[:]
4)name4 = list(names)
1 #看下面的代码,我在里面嵌套了一个二级列表,然后拷贝一份,把里面的abu改为ABU,结果我复制的也改了,为什么呢?就是因为这是潜copy,只拷贝了第一级。所以就这就是潜copy。 2 names = ["ZhangYang","Guyun","aiangPeng",["abu","Jack"],"XuLiangchen"] 3 name2 = names.copy() 4 names[2]="张德润" 5 names[3][0]="ABU" 6 print(names) 7 print(name2) 8 9 >>>['ZhangYang', 'Guyun', '张德润', ['ABU', 'Jack'], 'XuLiangchen'] 10 >>>['ZhangYang', 'Guyun', 'aiangPeng', ['ABU', 'Jack'], 'XuLiangchen']
2、深copy
#深copy主要是调用copy函数的copy.deepcop方法, copy_list=copy.deepcopy(想被copy的列表);看下面,现在改了子列表里面的信息,被copy的列表也没有变化了
1 import copy 2 names = ["ZhangYang","Guyun","aiangPeng",["abu","Jack"],"XuLiangchen"] 3 name2 = copy.deepcopy(names) 4 names[2]="张德润" 5 names[3][0]="张德润" 6 print(names) 7 print(name2) 8 9 >>>['ZhangYang', 'Guyun', '张德润', ['张德润', 'Jack'], 'XuLiangchen'] 10 >>>['ZhangYang', 'Guyun', 'aiangPeng', ['abu', 'Jack'], 'XuLiangchen']
列表循环:
1 names = ["ZhangYang","Guyun","aiangPeng", 2 for i in names: 3 print(i) 4 >>>ZhangYang 5 Guyun 6 aiangPeng 7 ['abu', 'Jack'] 8 XuLiangchen
商品列表作业代码:
老师写的版本+备注:
1 #Author:abu zhang 2 3 #定义商品列表 4 product_list = [ 5 ('Iphone',5800), 6 ('Mac Pro',9800), 7 ('Bike',800), 8 ('Watch',10600), 9 ('Coffee',31), 10 ('Alex Python',120) 11 ] 12 #定义购物车列表 13 shop_list = [] 14 15 salary = input('请输入你的工资:') #启动程序,让用户输入工资 16 if salary.isdigit(): #判断用户输入的是否为数字 17 salary = int(salary) #把salary转换成数字类型 18 while True: #上面通过之后进入死循环 19 for index,item in enumerate(product_list): #循环商品列表,enumerate() 方法可以取到列表下标(index)。 20 print(index,item) #打印商品和下标,如(0 iphone 5800) 21 user_choice = input('请选择你要购买的商品:') #让用户输入想要购买的商品 22 if user_choice.isdigit(): #判断用户输入的是否为数字类型 23 user_choice = int(user_choice) #把user_choice转为数字类型 24 if user_choice < len(product_list) and user_choice >=0: #判断用户输入的参数,是否匹配商品下标 25 p_item = product_list[user_choice] #这句话不好理解,定义用户商品列表的下标列表,如:用户输入一个0,那我product_list[0] =('Iphone',5800) 26 if p_item[1] <= salary: #判断用户的工资是否买的起商品 27 shop_list.append(p_item) #如买的起,就把它append到购物车里面去 28 salary -= p_item[1] #添加到购物车后进行扣钱 p_item[1] = product_list[0][1] 29 print('Added %s into shopping cart,your current balance in \033[31;1m%s\033[0m'%(p_item[0],salary)) #扣完钱后,打印用户买的商品以及所剩的钱 30 else: 31 print('\033[31;1m你的余额只剩%s,你买不起该商品,sorry!\033[0m'% salary) #上面如果买不起,打印你的钱不够 32 else: 33 print('product code %s is not exist!'% user_choice) #如果用户输入的参数,不匹配商品下标,打印无该商品 34 elif user_choice == 'q': #如果用户输入的是q,那就退出,并打印以及购买的商品,并打印还剩下多少钱 35 print("-------------shopping list-----------") 36 for p in shop_list: 37 print(p) 38 print("Your current balance:",salary) 39 exit() 40 else: 41 print('invalid option') #翻译:invalid option 无效的选项 42 elif len(salary) == 0: 43 print('薪资不能为空') 44 45 else: 46 print('请输入您的薪资')
自个写的版本
1 #Author:abu zhang 2 3 #定义商品列表 4 product_list = [ 5 ('Iphone',5800), 6 ('Mac Pro',9800), 7 ('Bike',800), 8 ('Watch',10600), 9 ('Coffee',31), 10 ('Alex Python',120) 11 ] 12 #定义购物车列表 13 shop_list = [] 14 salary = input('Please enter your salary:') #翻译,请输入你的薪资 15 if salary.isdigit(): 16 salary = int(salary) 17 while True: 18 for index,item in enumerate(product_list): #item=商品 19 print(index,item) 20 user_choice = input('请输入你想要购买的商品,添加至购物车:') #choice = 选择 21 if user_choice.isdigit(): 22 user_choice = int(user_choice) 23 if user_choice < len(product_list) and user_choice >= 0 : 24 p_item = product_list[user_choice] 25 if salary >= p_item[1]: 26 salary -= p_item[1] 27 shop_list.append(p_item) 28 print('你已购买了\033[31;1m%s\033[0m,所剩余额为\033[31;1m%s\033[0m'%(p_item[0],salary)) #\033[31;1m%s\033[0m' 29 else: 30 print('你买不起\033[31;1m%s\033[0m了,因为你钱不够了!'%p_item[0]) 31 else: 32 print('对不起,没有找到您想要的商品!') 33 34 elif user_choice == 'q': 35 print('----------shopping list-----------') 36 for i in shop_list: 37 print(i) 38 print('您所剩余额为\033[31;1m%s\033[0m,欢迎下次光临。good bye'%salary) 39 exit() 40 41 elif len(salary) == 0: 42 print('Input cannot be empty!') #翻译,输入不能为空 43 else: 44 print('input error!')
五、字符串操作
操作解释
1 #Author:abu zhang 2 #print('121'.isdigit()) #isdigit是否为整数,常用 3 #print('abc'.isalnum()) #判断是不是大小字母,返回True,否则返回False, 常用 4 #print('aa'.islower()) #判断是不是小写字母 ,返回True,否则返回False, 常用 5 print('MY'.isupper()) #判断是不是大写字母, 常用 6 #print('33.33'.isnumeric()) #判断是不是数字,常用 7 #print(' '.isspace()) #判断是否为空格,常用 8 print('+'.join(["1",'2','3','4'])) #把一个列表变成一个字符串,指定分隔符,常用 9 #>>>1+2+3+4 10 print('\nAlex\n'.lstrip()) #strip()去掉两遍的空格跟回车,lstrip去掉左边的空格跟回车 11 print('\nAlex\n'.rstrip()) #strip()去掉两遍的空格跟回车,rstrip去掉右边的空格跟回车 12 print('alex li'.replace('l','L',1)) #字符串替换,把l换成L 1代表换一个,不加全替换 13 print('1+2+3+4'.split('+')) #把字符串按照空格分成列表 ,常用 14 print('1+2\n+3+4'.splitlines()) #按照换行符来切成列表 ,常用 15 16 17 name = 'abu zhang {name} and {age}' 18 print(name.capitalize()) #首字母大写,用法:name.capitalize() 19 print(name.count('a')) #统计a有多少个,计数,用法:name.count('value') 20 print(name.center(50,'-')) #一共打印50个字符,不够的使用'-'代替,把里面的value放在中间 21 print(name.endswith('ng')) #endswith判断一个字符串以什么结尾,如:判断邮件地址qq.com结尾 22 print(name.expandtabs(tabsize=30)) #打印一个字符串,定义它可以多长,用处不大 23 print(name[name.find('z'):]) #find查找一个字符串的下标 24 print(name.format(name='abu',age=23)) #相当于变量,传参 25 print(name.index('d')) #查找字符串下标 26 print('ab23'.isalnum()) #包含小数和大写字母,返回True,否则返回False 27 print('AA'.isalnum()) #判断是不是大小字母,返回True,否则返回False 28 print('121a'.isdigit()) #isdigit是否为整数,常用 29 print('1a'.isidentifier()) #判断是不是合法的变量名 30 print('aa'.islower()) #判断是不是小写字母 ,返回True,否则返回False 31 print('33.33'.isnumeric()) #判断是不是数字,常用 32 print(' '.isspace()) #判断是否为空格,常用 33 print('My Name Is '.istitle()) #判断每个首字母是否为大写 34 print('My Name Is'.isprintable()) #判断是不是可以打印的 35 print('MY'.isupper()) #判断是不是大写字母 36 print('+'.join(["1",'2','3','4'])) #把一个列表变成一个字符串,指定分隔符,常用 37 print( name.ljust(50,'*')) #给左边添加字符串长度 38 print(name.rjust(50,'*')) #给右边添加字符串 39 print('AlEx'.lower()) #把大写全变成小写 40 print('AlEx'.upper()) #把小写全变成大写 41 print('\nAlex\n'.lstrip()) #strip()去掉两遍的空格跟回车,lstrip去掉左边的空格跟回车 42 print('\nAlex\n'.rstrip()) #strip()去掉两遍的空格跟回车,rstrip去掉右边的空格跟回车 43 p = str.maketrans('5bedfdef','12#%@456') #随机密码 44 print('alex li '.translate(p)) 45 print('alex li'.replace('l','L',1)) #字符串替换,把l换成L 1代表换一个,不加全替换 46 print('alex lil'.rfind('l')) # 从左往右找,找到最后边的下标 47 print('1+2+3+4'.split('+')) #把字符串按照空格分成列表 ,常用 48 print('1+2\n+3+4'.splitlines()) #按照换行符来切成列表 ,常用 49 print('Alex Li'.swapcase()) #大写变成小写,小写变成大写 50 print('alex li'.title()) #把每个字符的首字母变成大写 51 print('alex li'.zfill(50)) #不够的就添加0
输出结果
1 True 2 1+2+3+4 3 Alex 4 5 6 Alex 7 aLex li 8 ['1', '2', '3', '4'] 9 ['1+2', '+3+4'] 10 Abu zhang {name} and {age} 11 5 12 ------------abu zhang {name} and {age}------------ 13 False 14 abu zhang {name} and {age} 15 zhang {name} and {age} 16 abu zhang abu and 23 17 19 18 True 19 True 20 False 21 False 22 True 23 False 24 True 25 True 26 True 27 True 28 1+2+3+4 29 abu zhang {name} and {age}************************ 30 ************************abu zhang {name} and {age} 31 alex 32 ALEX 33 Alex 34 35 36 Alex 37 al5x li 38 aLex li 39 7 40 ['1', '2', '3', '4'] 41 ['1+2', '+3+4'] 42 aLEX lI 43 Alex Li 44 0000000000000000000000000000000000000000000alex li
六、字典操作
字典是一种key-value的数据类型,使用就像我们上学用的字典,通过笔划,字母来查对应页的详细内容。
新建一个字典,打印字典
1 #key : value 中间用冒号分割,一条数据以逗号隔开 2 #字典是无排序的 3 info = { 4 'stu1101':'TengLan Wu', 5 'stu1102':'LongZe Luola', 6 'stu1103':'XiaoZe Maliya', 7 } 8 9 print(info)
{'stu1101': 'TengLan Wu', 'stu1102': 'LongZe Luola', 'stu1103': 'XiaoZe Maliya'}
通过key查找内容
方法一:使用info.get方法,如果找到这个key就回返回里面的值,否则返回None
1 info = { 2 'stu1101':'TengLan Wu', 3 'stu1102':'LongZe Luola', 4 'stu1103':'XiaoZe Maliya', 5 } 6 print(info.get('stu1103')) 7 print(info.get('stu1104'))
>>>XiaoZe Maliya
>>>None
1 info = { 2 'stu1101':'TengLan Wu', 3 'stu1102':'LongZe Luola', 4 'stu1103':'XiaoZe Maliya', 5 } 6 print(info['stu1101']) #通过key查里面的值 7 8 TengLan Wu
修改
如果1101不存在会增加一条数据
info = { 'stu1101':'TengLan Wu', 'stu1102':'LongZe Luola', 'stu1103':'XiaoZe Maliya', } info['stu1101'] = "武藤兰" print(info) {'stu1101': '武藤兰', 'stu1102': 'LongZe Luola', 'stu1103': 'XiaoZe Maliya'}
增加
1 info = { 2 'stu1101':'TengLan Wu', 3 'stu1102':'LongZe Luola', 4 'stu1103':'XiaoZe Maliya', 5 } 6 info['stu1104'] = "武藤兰"ae 7 print(info) 8 {'stu1101': 'TengLan Wu', 'stu1102': 'LongZe Luola', 'stu1103': 'XiaoZe Maliya', 'stu1104': '武藤兰'}
删除
del 加key删除
1 info = { 2 'stu1101':'TengLan Wu', 3 'stu1102':'LongZe Luola', 4 'stu1103':'XiaoZe Maliya', 5 } 6 info['stu1104'] = "武藤兰" 7 del info['stu1101'] 8 print(info)
info.pop,指定删除,info.popitem随机删除一个
1 info = { 2 'stu1101':'TengLan Wu', 3 'stu1102':'LongZe Luola', 4 'stu1103':'XiaoZe Maliya', 5 } 6 info['stu1104'] = "武藤兰" 7 info.pop('stu1102') 8 info.popitem() 9 print(info)
{'stu1101': 'TengLan Wu', 'stu1103': 'XiaoZe Maliya'}
#判断字典里面的key存不存在,存在返回真,否则假
语法:
print('stu1104' in info)
info = { 'stu1101':'TengLan Wu', 'stu1102':'LongZe Luola', 'stu1103':'XiaoZe Maliya', } print('stu1104' in info) #info.has_key('stu1103') in python2.x版本这么写
False
多级字典嵌套及操作
1 av_catalog = { 2 "欧美":{ 3 "www.youporn.com": ["很多免费的,世界最大的","质量一般"], 4 "www.pornhub.com": ["很多免费的,也很大","质量比yourporn高点"], 5 "letmedothistoyou.com": ["多是自拍,高质量图片很多","资源不多,更新慢"], 6 "x-art.com":["质量很高,真的很高","全部收费,屌比请绕过"] 7 }, 8 "日韩":{ 9 "tokyo-hot":["质量怎样不清楚,个人已经不喜欢日韩范了","听说是收费的"] 10 }, 11 "大陆":{ 12 "1024":["全部免费,真好,好人一生平安","服务器在国外,慢"] 13 } 14 } 15 16 av_catalog['大陆']['1024'][1] = "可以再国内做镜像" 17 av_catalog.setdefault("大陆",{"www.baidu.com":[1,2,3]}) 18 print(av_catalog)
其它
其中的setdefault很重要,setdefault插入一条数据,如果这个key值已经存在就不插入,如果不存在则插入
用法:
av_catalog.setdefault("大陆",{"www.baidu.com":[1,2,3]})
1 #values 2 >>> info.values() 3 dict_values(['LongZe Luola', 'XiaoZe Maliya']) 4 5 #keys 6 >>> info.keys() 7 dict_keys(['stu1102', 'stu1103']) 8 9 10 #setdefault 11 >>> info.setdefault("stu1106","Alex") 12 'Alex' 13 >>> info 14 {'stu1102': 'LongZe Luola', 'stu1103': 'XiaoZe Maliya', 'stu1106': 'Alex'} 15 >>> info.setdefault("stu1102","龙泽萝拉") 16 'LongZe Luola' 17 >>> info 18 {'stu1102': 'LongZe Luola', 'stu1103': 'XiaoZe Maliya', 'stu1106': 'Alex'} 19 20 21 #update 22 >>> info 23 {'stu1102': 'LongZe Luola', 'stu1103': 'XiaoZe Maliya', 'stu1106': 'Alex'} 24 >>> b = {1:2,3:4, "stu1102":"龙泽萝拉"} 25 >>> info.update(b) 26 >>> info 27 {'stu1102': '龙泽萝拉', 1: 2, 3: 4, 'stu1103': 'XiaoZe Maliya', 'stu1106': 'Alex'} 28 29 #items ,把一个字典,变成一个大的列表 30 info.items() 31 dict_items([('stu1102', '龙泽萝拉'), (1, 2), (3, 4), ('stu1103', 'XiaoZe Maliya'), ('stu1106', 'Alex')]) 32 33 34 #通过一个列表生成默认dict,有个没办法解释的坑,少用吧这个 35 >>> dict.fromkeys([1,2,3],'testd') 36 {1: 'testd', 2: 'testd', 3: 'testd'}
合并更新
info.update(),把两个字典合并起来,如果有相同key的,该key里面的内容会被更新掉
1 info = { 2 'stu1101':'TengLan Wu', 3 'stu1102':'LongZe Luola', 4 'stu1103':'XiaoZe Maliya', 5 } 6 b = { 7 'stu1101':'abu', 8 2:3, 9 4:5 10 } 11 info.update(b) 12 print(info) 13 14 {'stu1101': 'abu', 'stu1102': 'LongZe Luola', 'stu1103': 'XiaoZe Maliya', 2: 3, 4: 5}
字典的循环
循环 i=key print (i,infor[key])
1 info = { 2 'stu1101':'TengLan Wu', 3 'stu1102':'LongZe Luola', 4 'stu1103':'XiaoZe Maliya', 5 } 6 for i in info: 7 print(i,info[i]) 8 9 stu1101 TengLan Wu 10 stu1102 LongZe Luola 11 stu1103 XiaoZe Maliya
字典多级嵌套练习程序
1 #Author:abu zhang 2 3 data = { 4 '广东':{ 5 '广州':{ 6 '天河':['棠德花园','阿布家'], 7 '白云':['白云学院','学校'] 8 }, 9 '佛山':{}, 10 '湛江':{ 11 '霞山':['山卡拉','aaa'], 12 '徐闻':['上卡拉2','bbb'] 13 } 14 }, 15 '北京':{ 16 '朝阳':{ 17 }, 18 '昌平':{} 19 }, 20 '深圳':{} 21 } 22 23 exit_false = False 24 while not exit_false: #死循环 25 for i in data: #循环打印字典一级菜单key 26 print(i) 27 choice = input('请选择进入>>:') #输入菜单 28 if choice in data: #判读输入的是否是菜单里面的key,如果是为True,接着走 29 while not exit_false: #然后又来个死循环 30 for i2 in data[choice]: #循环打印key1里面的菜单 31 print(i2) 32 choice2 = input('请选择进入>>:') 33 if choice2 in data[choice]: #判读输入的key1里面的key是不是等于key,如果是接着走,继续打印,以此类推 34 while not exit_false: 35 for i3 in data[choice][choice2]: 36 print(i3) 37 choice3 = input('请选择进入>>:') 38 if choice3 in data[choice][choice2]: 39 for i4 in data[choice][choice2][choice3]: 40 print(i4) 41 choice4 = input('已经是最后一层,返回上一层按b>>:') 42 if choice4 == 'b': 43 pass 44 elif choice4 == 'q': 45 exit_false = True 46 if choice3 == 'b': 47 break 48 elif choice3 == 'q': 49 exit_false = True 50 if choice2 == 'b': 51 break 52 elif choice2 == 'q': 53 exit_false = True 54 elif choice == 'q': 55 exit_false = True