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)
View Code

 字典 (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}
View Code

 

posted @ 2017-08-31 12:25  eggtea  阅读(238)  评论(0编辑  收藏  举报