python学习笔记(二)— 字典(Dictionary)
字典是另一种可变容器模型,且可存储任意类型对象。字典是无序的,因为它没有下标,用key来当索引,所以是无序的。
字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})中 ,格式如下所示:
d = {key1 : value1, key2 : value2 }
键必须是唯一的,但值则不必。值可以取任何数据类型,但键必须是不可变的,如字符串,数字或元组。
一个简单的字典实例:
dict1 = { 'abc': 456 }; dict2 = { 'abc': 123, 1: 37 };
dict3 = {'marry':[18,18612512981,'北京'],'amy':[20,18612512991,'山东'],'lily':[25,18612532981,'河南']
一、访问字典里的值
dict = {'marry':[18,18612512981,'北京'],'amy':[20,18612512991,'山东'],'lily':[25,18612532981,'河南']} print(dict.get('maryy'))#获取marry的信息,这种方式如果key不存在的话,会返回None print(dict['marry'])#获取marry的信息,这种方式如果key不存在的话,会报错 print('marry' in dict) #判断marry是否在这个字典中,返回True或者False
返回:
li None [18, 18612512981, '北京'] True
二、字典的操作
增
dict = {'name':'li','age':18,'sex':'女','addr':'昌平区','money':10000000 } dict.setdefault('weight',130) dict['shengao']=198 print(dict)
返回:
{'age': 18, 'addr': '昌平区', 'name': 'li', 'shengao': 198, 'sex': '女', 'weight': 130, 'money': 10000000}
改
dict = {'name':'li','age':18,'sex':'女','addr':'昌平区','money':10000000 } dict['name']='小黑'#如果这个key存在的话,修改他的值,如果key不存在的话,新增一个 print(dict)
返回:
{'money': 10000000, 'name': '小黑', 'sex': '女', 'age': 18, 'addr': '昌平区'}
删
dict = {'name':'li','age':18,'sex':'女','addr':'昌平区','money':10000000 } dict.pop('sex')#删除某个key dict.popitem()#随机删除一个 del dict['age']#删除某个key #d.clear()#清空字典 print(dict)
返回:
{'name': 'li', 'money': 10000000}
三、字典的内置方法
dict = {'stu1':'cc','stu2':'andashu','stu3':'niuniu'} print(dict.values())#打印所有value print(dict.keys())#打印所有的key if 'stu2' in dict:#判断key是否在这个字典里头 print('存在')
返回:
dict_values(['andashu', 'niuniu', 'cc']) dict_keys(['stu2', 'stu3', 'stu1']) 存在
四、字典的嵌套
stus = { 'ybq': { 'age': 18, 'sex': '男', 'addr': '昌平区', 'money': 10000000, 'jinku': { '建行卡': 80000, '工商卡': 800000, '招商卡': 8000000 } }, 'tlx': { 'age': 19, 'sex': '女', 'addr': '昌平区', 'money': 10000000, 'huazhuangpin': ['chanle','haha'] }, 'mpp': { 'age': 19, 'sex': '女', 'addr': '昌平区', 'money': 10000000, "bag": { 'lv': '一车', '鳄鱼':10 } }, } all_money = stus['ybq']['jinku'].values() print(all_money) print(sum(all_money)) sum_money = 0 for money in all_money: sum_money= sum_money+money print(sum_money)
返回:
dict_values([8000000, 800000, 80000])
8880000
8880000
五、字典的循环
dic = {'stu1':'a','stu2':'b','stu3':'c'} for k in dic: print(k,dic[k])#打印key和value的值,推荐使用这种方式,速度快 # for k,v in dic.items(): # print(k,v)#打印key和value的值,这种方式不推荐,因为会把字典转换成列表,效率不高
返回:
stu2 a
stu3 b
stu1 c