tuple 元组
一、tuple 类的基本属性
1.元组,有序;
元素不可被修改,不能被增加或者删除
tuple类
tu = (111,22,33,44)
一般写元组的时候,推荐在最后加入,和类方法进行区别
tu2 = (111,"root",(11,22),[(33,44)],True,22,33,44,)
元组的一级元素不可修改、增加或删除
tu = (111,"root",(11,22),[(33,44)],True,22,33,44,) v = tu[3] v.extend((11,)) print(tu) #(111, 'root', (11, 22), [(33, 44), 11], True, 22, 33, 44)
2.元组索引
tu = (111,"root",(11,22),[(33,44)],True,22,33,44,) v = tu[0] print(v) n = tu[3][0][0] #注意这里 print(n) #111 #33
3.元组切片
tu = (111,"root",(11,22),[(33,44)],True,22,33,44,) v = tu[0:2] print(v) #(111, 'root')
*** v = tu[0] 和 del tu[0] 都是错误的,因为元组不能被修改、添加和删除
4.可迭代对象
元组成为被迭代对象,可以被 for 循环
tu = (111,"root",(11,22),[(33,44)],True,22,33,44,) for item in tu: print(item) #111 #root #(11, 22) #[(33, 44)] #True #22 #33 #44
元组成为被迭代对象,添加进 list 列表中
li = ["root","even"] li.extend((11,22,33,)) print(li) #['root', 'even', 11, 22, 33]
5.元组的转换
把字符串转换成 tuple 元组
s = "root" v = tuple(s) print(v) #('r', 'o', 'o', 't')
把 list 列表转换成 tuple 元组
li = ["even",123] v = tuple(li) print(v) #('even', 123)
把 tuple 元组转换成 list 列表
tu = (123,123,"root") v = list(tu) print(v) #[123, 123, 'root']
元组转换成字符串(既有数字又有字符串的情况)
需要自己写 for 循环一个一个处理
tu = (11,22,33,"123","even") s = "" for i in tu: s = s + str(i) print(s) #112233123even
元组转换成字符串(列表中的元素只有字符串的情况)
直接使用字符串 join 方法
tu = ("123","alex") #这里的"123"不是数字 v = "_".join(tu) print(v) #123alex
二、tuple 类的方法
1.count
统计某个值出现的次数(类似list类中的意义)
tu = (111,"root",(11,22),[(33,44)],True,22,33,44,) n = tu.count(22) print(n) #1
2.index
找到某个值的索引位置(类似list类中的意义)
tu = (111,"root",(11,22),[(33,44)],True,22,33,44,) n = tu.index(22) print(n) #5
三、tuple 类 —— 总而言之
在创建数据不允许被修改的时候,使用tuple类
除非把tuple转换成list,否则无法对其修改
dict 字典
一、dict 类的基本属性
1.字典的基本结构
info = {"k1":"v1","k2":"v2"} info = { "k1":"v1", #键值对(一个键key和一个值value生成的一对) "k2":"v2" }
2.值 - value
字典的value可以是任何值
info = { "k1": 18, "k2": True, "k3": [ 11, [], (), 22, 33, { 'kk1': 'vv1', 'kk2': 'vv2', 'kk3': (11,22), } ], "k4": (11,22,33,44) } print(info) #{'k1': 18, 'k2': True, 'k3': [11, [], (), 22, 33, {'kk1': 'vv1', 'kk2': 'vv2', 'kk3': (11, 22)}], 'k4': (11, 22, 33, 44)}
3.键 - key
*** list列表、dict字典不能作为字典的 key
info ={ 1: 'asdf', "k1": 'asdf', True: "123", #True布尔值作为key,为1,因为上面已经有1作为key,所以这里输出会直接跳过,但布尔值可以作为key # [11,22]: 123 列表作为key,ide会直接报错 (11,22): 123, # {'k1':'v1'}: 123 字典作为key,ide会直接报错 } print(info)
4.字典无序 (Python3.6版本后改为有序)
PS:这个地方因为我在输出的时候,无论如何都是按照 key和 value对应的顺序输出,所以得出的结论,查询网上的资料后发现 3.6 版本后 dict改成了有序,
Python2.7待测试
info = { "k1": 18, "k2": True, "k3": [ 11, [], (), 22, 33, { 'kk1': 'vv1', 'kk2': 'vv2', 'kk3': (11,22), } ], "k4": (11,22,33,44) } print(info) #{'k1': 18, 'k2': True, 'k3': [11, [], (), 22, 33, {'kk1': 'vv1', 'kk2': 'vv2', 'kk3': (11, 22)}], 'k4': (11, 22, 33, 44)}
5.通过索引方式找到指定元素
info = { "k1": 18, 2: True, "k3": [ 11, [], (), 22, 33, { 'kk1': 'vv1', 'kk2': 'vv2', 'kk3': (11,22), } ], "k4": (11,22,33,44) } v = info['k3'][5]['kk3'][0] print(v) #11
6.字典支持 del 删除
info = { "k1": 18, 2: True, "k3": [ 11, [], (), 22, 33, { 'kk1': 'vv1', 'kk2': 'vv2', 'kk3': (11,22), } ], "k4": (11,22,33,44) } del info['k1'] #删除k1的key和value del info['k3'][5]['kk1'] #删除kk1的key和value print(info) #{2: True, 'k3': [11, [], (), 22, 33, {'kk2': 'vv2', 'kk3': (11, 22)}], 'k4': (11, 22, 33, 44)}
7.判断
dic = { "k1": 'Q' } v1 = "k1" in dic #判断k1是否在字典中 print(v1) v2 = "Q" in dic.values() #判断Q是否在字典的values中 print(v2) #True #True
8.for 循环和 dict 类的一些方法
for item in info:
dict 字典在 for 循环的时候,默认循环输出键值 key
info = { "k1": 18, 2: True, "k3": [ 11, [], (), 22, 33, { 'kk1': 'vv1', 'kk2': 'vv2', 'kk3': (11,22), } ], "k4": (11,22,33,44) } for item in info: print(item) #k1 #2 #k3 #k4
for item in info.keys():
效果所以等同于上面代码
info = { "k1": 18, 2: True, "k3": [ 11, [], (), 22, 33, { 'kk1': 'vv1', 'kk2': 'vv2', 'kk3': (11,22), } ], "k4": (11,22,33,44) } for item in info.keys(): print(item) #k1 #2 #k3 #k4
for item in info.values():
for 循环输出 value 的值
info = { "k1": 18, 2: True, "k3": [ 11, [], (), 22, 33, { 'kk1': 'vv1', 'kk2': 'vv2', 'kk3': (11,22), } ], "k4": (11,22,33,44) } for item in info.values(): print(item) #18 #True #[11, [], (), 22, 33, {'kk1': 'vv1', 'kk2': 'vv2', 'kk3': (11, 22)}] #(11, 22, 33, 44)
for item in info.keys():
print(item,info[item])
既输出 key也输出 value
info = { "k1": 18, 2: True, "k3": [ 11, [], (), 22, 33, { 'kk1': 'vv1', 'kk2': 'vv2', 'kk3': (11,22), } ], "k4": (11,22,33,44) } for item in info.keys(): print(item,info[item]) #k1 18 #2 True #k3 [11, [], (), 22, 33, {'kk1': 'vv1', 'kk2': 'vv2', 'kk3': (11, 22)}] #k4 (11, 22, 33, 44)
for k,v in info.items():
print(k,v)
另一种既输出 key 也输出 value 的方法
info = { "k1": 18, 2: True, "k3": [ 11, [], (), 22, 33, { 'kk1': 'vv1', 'kk2': 'vv2', 'kk3': (11,22), } ], "k4": (11,22,33,44) } for k,v in info.items(): #将key赋值给k,将value赋值给v print(k,v) #k1 18 #2 True #k3 [11, [], (), 22, 33, {'kk1': 'vv1', 'kk2': 'vv2', 'kk3': (11, 22)}] #k4 (11, 22, 33, 44)
二、dict 类的方法
1.静态方法fromkeys
根据序列,创建字典,并且指定统一的值
v = dict.fromkeys(["k1",123,"999"]) print(v) #{'k1': None, 123: None, '999': None} v = dict.fromkeys(["k1",123,"999"],111) print(v) #{'k1': 111, 123: 111, '999': 111}
2.get
根据 key 获取值,key不存在时(None),可以指定附加值
dic = { "k1":'v1' } v1 = dic.get('k1',1111) #当k1有自己的value时,忽略后面附加值 v2 = dic.get('k2') #当没有k2,后面也没有加附加值时,输出None v3 = dic.get('k3',3333) #当没有k3,但后面有附加值时,输出附加值 print(v1) print(v2) print(v3) #v1 #None #3333
3.pop
删除,并得到被删除的值
dic = { "k1":'v1', "k2":'v2' } v = dic.pop('k1') print(v) #输出被删除的值 print(dic) #输出删除操作之后的dic #v1 #{'k2': 'v2'}
4.popitem
随机删除键值对,并得到被删除的键值对
dic = { "k1":'v1', "k2":'v2' } n = dic.popitem() print(n) #输出被随机删除的键值对 print(dic) #输出被随机删除操作之后的dic #('k2', 'v2') #{'k1': 'v1'}
5.setdefault
设置值,若已经存在,则不设置。只获取当前 key所对应的 value
若不存在,则设置值。并获取当前 key对应的 value
dic = { "k1":'v1', "k2":'v2' } n1 = dic.setdefault('k1','123') print(dic,n1) n2 = dic.setdefault('k111','112233') print(dic,n2) #{'k1': 'v1', 'k2': 'v2'} v1 #{'k1': 'v1', 'k2': 'v2', 'k111': '112233'} 112233
6.update
已经存在的,进行覆盖新值;不存在的,进行更新
dic = { "k1":'v1', "k2":'v2' } dic.update({'k1':'11111','k3':123}) print(dic) #{'k1': '11111', 'k2': 'v2', 'k3': 123}
另一种写法:
dic = { "k1":'v1', "k2":'v2' } dic.update(k1=123,k3=333,k5="sdfsdf") print(dic) #{'k1': 123, 'k2': 'v2', 'k3': 333, 'k5': 'sdfsdf'}
* dict类最常用的几个功能和方法
.keys()
.values()
.items()
get
update