Python学习(004)-字典{}
特点:
无序状态
键唯一
不可变类型:字符串、整型、元组
可变类型:列表、字典
字典创建
第一种:
dic1={'name':'Nick',"age":'18','sex':'man'} print(dic1['name']) ---------------->Nick
第二种:
dic2=dict((('name','Nick'),('age',18))) print(dic2) ---------------------->{'name': 'Nick', 'age': 18}
第三种:
dic3=dict([['name','Nick'],['age',18]]) print(dic3) ------------->{'name': 'Nick', 'age': 18}
键有则修改,无则新增
如:
dic1={'name':'Nick',"age":'18','sex':'man'} dic1['num']=15755055016 print(dic1) ------>{'name': 'Nick', 'age': '18', 'sex': 'man', 'num': 15755055016}
dic1={'name':'Nick',"age":'18','sex':'man'} dic1['age']=15 print(dic1) ------->{'name': 'Nick', 'age': 15, 'sex': 'man'}
setdefault方式
键存在,则不做动作
键不存在,则在字典中新增
如:
键存在:
dic1={'name':'Nick',"age":'18','sex':'man'} dic1.setdefault('age',34) print(dic1) --------->{'name': 'Nick', 'age': '18', 'sex': 'man'}
dic1={'name':'Nick',"age":'18','sex':'man'} dic1.setdefault('num',15755055016) print(dic1) ------------>{'name': 'Nick', 'age': '18', 'sex': 'man', 'num': 15755055016}
setdefault是有返回值的
返回值中,若在原字典中新增了数据,则返回新增的值若原字典存在这个键,则返回原字典的值
如:
新增
dic1={'name':'Nick',"age":'18','sex':'man'} b=dic1.setdefault('num',15755055016) print(b) --------->15755055016
键存在
dic1={'name':'Nick',"age":'18','sex':'man'} b=dic1.setdefault('age',24) print(b) -------->18
2.查
通过键去查询值
print(dic1['name'])
打印字典中所有的键
dic1.keys() ------>dict_keys(['name', 'age', 'sex'])
结果非列表类型,若想要列表输出,需要转化
list(dic1.keys()) -------->['name', 'age', 'sex']
3.改
dic1更新dic,有的会被覆盖,没有的会被新增
如
dic1={'name':'Nick',"age":18,'sex':'man'} dic2=dict((('name','Nick'),('age',19),('num',15755055016))) dic1.update(dic2) print(dic1) --------->{'name': 'Nick', 'age': 19, 'sex': 'man', 'num': 15755055016} print(dic2) --------->{'name': 'Nick', 'age': 19, 'num': 15755055016}
4.删
删除字典中指定键值对
dic1={'name':'Nick',"age":18,'sex':'man'} del dic1['name'] print(dic1) ------>{'age': 18, 'sex': 'man'}
删除字典中指定键值对,会有返回值
dic1={'name':'Nick',"age":18,'sex':'man'} a=dic1.pop('age') print(a) ------>18
清空整个字典
dic1={'name':'Nick',"age":18,'sex':'man'} dic1.clear() print(dic1) ------>{} 表示字典内的键值对被清空,但该字典仍然在内存中
随机删除键值对
dic1={'name':'Nick',"age":18,'sex':'man'} a=dic1.popitem() print(a,dic1) -------->('sex', 'man') {'name': 'Nick', 'age': 18}
删除字典
dic1={'name':'Nick',"age":18,'sex':'man'} del dic1 print(dic1) ------->报错,因为dic1字典被删除,不存在了
5.其他操作涉及的方法
dic=dict.fromkeys(['host1','host2','host3'],'name') print(dic)------>{'host1': 'name', 'host2': 'name', 'host3': 'name'} #新建字典方式,但存在问题,涉及深浅拷贝,这里只会浅拷贝
排序 (依据键值进行排序)
dic={'2':'555','4':'666','1':'111','3':'222'} print(sorted(dic)) ---->['1', '2', '3', '4'] print(sorted(dic.values())) ------>['111', '222', '555', '666'] print(sorted(dic.items())) ------>[('1', '111'), ('2', '555'), ('3', '222'), ('4', '666')]
遍历
打印键
for i in dic1: print(i) ------>name age sex
打印键与值
print(i,dic1(i))
name Nick
age 18
sex man 直接快速高效的方法
或
for i,v in dic1.items(): print(i,v)
name Nick
age 18
sex man 需要转换,耽误时间,效率低
打印键值对
for i in dic1.items(): print(i) ------> ('name', 'Nick') ('age', 18) ('sex', 'man')