5 列表和字典类型
列表(lislt)
有序序列 存储多个值,元素类型没有限制,支持增删改查,按索引(即下标)操作。
格式 :list_name = [ ] 里面元素用逗号分隔开
PS:
user_info = ['tony,28,176]
基本操作
1 #!/usr/bin/env python3 2 # _*_ coding:utf-8 _*_ 3 # @Time : 2017/08/31 4 # @Author : tony 5 # @File : list_pracitce 6 # @Version : 1.0 7 8 9 10 girls = ['alex','wpq',['egon','ysb']] 11 12 # 查询 13 print(girls[2]) # ['egon','ysb'] 14 print(girls[2][0]) # 'egon' 15 16 17 # 增加 18 19 girls.append('oldboy') # 追加到最后 20 print(girls) # ['alex','wpq',['egon','ysb'],'oldboy'] 21 22 23 # del 24 25 girls.remove('wpq') # 指定一个元素 26 print(girls) # ['alex', ['egon', 'ysb'], 'oldboy'] 27 28 del girls[1] # del 删掉指定的元素索引 29 30 ret = girls.pop() # 随机弹出一个元素,也可以指定下标,返回被删的值, 31 print(ret) 32 33 34 # 改 35 36 girls = ['alex','wpq',['egon','ysb']] 37 38 girls[0] = 'alex_SB' # 通过下标直接赋新值 39 print(girls) # ['alex_SB', 'wpq', ['egon', 'ysb']]
常用方法
#################################################################### # # # 常用方法 # # # #################################################################### l = ['a','b','c','d','e','f'] print(type(l)) # <class 'list'> # 索引 print(l.index('d')) # 返回元素的索引 print(l.count('d')) # 统计元素的个数 # 切片 print(l[0]) # a print(l[1:5]) # b,c,d,e 顾头不顾尾 print(l[1:5:2]) # b,d print(l[-1]) # f # 长度 print(len(l)) # 元素的个数,也就是list 的长度 # 成员测试 in ,return bool print('c' in l) # True print('y' in l) # False # 插入 (指索引定位置插入) l.insert(1,'x') # 指定一个索引 print(l) # ['a', 'x', 'b', 'c', 'd', 'e', 'f'] l.insert(2,['也','可','插入','list']) print(l) # ['a', 'x', ['也', '可', '插入', 'list'], 'b', 'c', 'd', 'e', 'f'] # 可以一次插入多个元素,仅追加, l.extend(['x','y','z']) # 一次插几个元素,用list包起来,追加到最后,类似扩展 print(l) # ['a', 'x', ['也', '可', '插入', 'list'], 'b', 'c', 'd', 'e', 'f', 'x', 'y', 'z'] # clear #l.clear() print(l) # [] 空了 # copy 复制 l2 = l.copy() print(l2) # 数据一样 # 排序 倒序,正序 (大 -- 小) l3 = [1,2,3,4,5,6,7,8] l3.reverse() # 改变原来的顺寻 print(l3) # [8, 7, 6, 5, 4, 3, 2, 1] #l3.sort() # 从大到小排列 print(l3) # [1, 2, 3, 4, 5, 6, 7, 8] l4 = sorted(l3) # Built-in function sorted print(l4)
字典 (dict)
用途:存多个值,这一点与列表相同,值可以是任意数据类型,存在里面的数据是无序的
特征:每一个值都一个唯一个对应关系,即key,强调一点,key必须是不可变类型
格式:定义在{ },逗号分割,每一个元素的形式都是key:value
PS:
user_info = { 'name' : 'tony' , 'age' : 28, 'mail ' : ['**qq.com','**163.com','**sina.com'] }
基本操作
1 ############################################################# 2 # 3 # dict 是个无序的序列 4 # 5 6 7 city_info = {'山东':'鲁','北京':'京','上海':'沪'} 8 9 # 查看 10 print('#'*30)
msg_dict = {'name':'tony','age':28,'sex':'male'} 11 ret = msg_dict.get('tel','Sorry not fond') # get 获取字典的key,要用一个变量来接收值,有则返回,无默认None ,也可自定提示 12 print(ret) # Sorry not fond 13 print(city_info['山东']) # 鲁 14 15 for k,v in city_info.items(): # dict.items() 含有 key vaule 16 print(k,v) # 因为无序,指不定那个优先 17 18 19 # 曾加 20 print('#'*30) 21 22 city_info['天津'] = '津' 23 24 for k,v in city_info.items(): # dict.items() 含有 key vaule 25 print(k,v) # 因为无序,指不定那个优先 26 27 28 29 # 删除 30 print('#'*30) 31 32 del city_info['上海'] 33 34 for k,v in city_info.items(): # dict.items() 含有 key vaule 35 print(k,v) # 因为无序,指不定那个优先
常用方法:
1 ############################################################# 2 # 3 # dict 常用方法 4 # 5 ############################################################# 6 7 8 # msg 9 msg = ['tony',28,'male'] 10 msg_dict = {'name':'tony','age':28,'sex':'male'} 11 12 13 14 # 存/取 15 16 #print(msg_dict['TEL']) # 没有的 Key 不要瞎弄 KeyError: 'TEL' 17 18 print(msg_dict.get('name',None)) # 有就返回,tony 没有默认返回None 19 print(msg_dict.get('TEL','Not find')) # 么有找,return Not find 20 21 msg_dict['TEL'] = 185 # 增加值 22 print(msg_dict) # 无序 {'age': 28, 'name': 'tony', 'TEL': 185, 'sex': 'male'} 23 24 25 26 27 # 删除 28 29 #print(msg_dict.pop('TEL',None)) # pop:key存在则弹出值,不存在则返回默认值,如果没有默认值则报错 30 31 #print(msg_dict.popitem()) # 随机删一个 key ,vaule 32 33 34 # 键值对 35 36 37 print(msg_dict.keys()) # dict_keys(['TEL', 'sex', 'age', 'name']) 38 print(msg_dict.values()) # dict_values([28, 185, 'tony', 'male']) 39 print(msg_dict.items()) # dict_items([('name', 'tony'), ('sex', 'male'), ('TEL', 185), ('age', 28)]) 40 41 print(type(msg_dict.values())) # <class 'dict_values'> 42 43 44 45 46 47 # 循环 48 49 50 print('*'*30) # 演示效果 51 for k in msg_dict.keys(): 52 print(k) # all key 53 print(k,msg_dict[k]) # all values 54 55 56 57 print('*'*30) 58 for k in msg_dict.values(): 59 print(k) # all values 60 61 62 63 64 print('*'*30) 65 for k,v in msg_dict.items(): 66 print(k,v) # all key and values 67 68 69 70 # 长度 71 72 print(len(msg_dict)) # 4 73 74 # 成员测试 75 76 print('name' in msg_dict) # test key, return bool 77 print('name' in msg_dict.keys()) # test key, return bool 78 print('tony' in msg_dict.values()) # test values return bool 79 print(('name','tony') in msg_dict.items()) # test items return bool 80 81 82 83 # update 没有的 key 直接添加, 存在的,更新新值 84 85 msg_dict.update({'a':1,'name':'Tony'}) # 存在的更新,不存在的添加 86 87 print(msg_dict) # {'age': 28, 'TEL': 185, 'name': 'Tony', 'a': 1, 'sex': 'male'} 88 89 # setdefault:key不存在则设置默认值,并且放回值默认值 90 # key存在则不设置默认,并且返回已经有的值 91 92 ret = msg_dict.setdefault('name') # 有货直接返回 93 print(ret) # return tony 94 95 ret = msg_dict.setdefault('tel') # 没有货,返回None 96 print(ret) # None 97 98 msg_dict.setdefault('hobbies',[]).append('study') # 明知道没有也可直接添加 99 print(msg_dict) # {'TEL': 185, 'tel': None, 'sex': 'male', 'hobbies': ['study'], 'a': 1, 'name': 'Tony', 'age': 28} 100 101 msg_dict.setdefault('hobbies',[]).append('read') # 指定添加 102 msg_dict.setdefault('hobbies',[]).append('sleep') # 指定添加 103 104 print(msg_dict) # {'hobbies': ['study', 'read', 'sleep'], 'TEL': 185, 'name': 'Tony', 'tel': None, 'age': 28, 'sex': 'male', 'a': 1} 105 106 107 # copy 复制 108 109 d = msg_dict.copy() 110 print(d) # 元素一样,顺序不一样,{'a': 1, 'hobbies': ['study', 'read', 'sleep'], 'age': 28, 'TEL': 185, 'sex': 'male', 'name': 'Tony', 'tel': None} 111 112 113 114 # 快速批量创建字典 115 116 d1 = msg_dict.fromkeys(('name','age','sex'),None) # 批量创建的key 要用元组包起来,values 默认用同一个None 117 print(d1) # {'sex': None, 'name': None, 'age': None} 118 119 d2 =d1.fromkeys(('name','age','sex'),('tony',28,'male')) # 批量创建 key values ,前提有一个字典,用它的fromkeys方法 120 print(d2) # kye 的值为同一个,值可以是一个序列,这里用的是 tuple {'name': ('tony', 28, 'male'), 'age': ('tony', 28, 'male'), 'sex': ('tony', 28, 'male')} 121 122 123 124 125 # 其他创建字典的方法 126 127 info = dict(name = 'tony',age=28,sex='male') # { } 内部就是这样实现的 128 129 print(info) # {'age': 28, 'sex': 'male', 'name': 'tony'} 130 131 132 info1 = dict([('name','tony'),('age',28)]) # list 包起来 元组 ,估计内部应该是 for 循环 然后在配对 , 呵呵 瞎猜的 。助理解就行 133 134 print(info1) # {'name': 'tony', 'age': 28}