字典的特点:
1.无序的
2.key唯一
ps:类似于java中的map
一、字典创建
字典的每个键值 key=>value 对用冒号 : 分割,每个键值对之间用逗号 , 分割,整个字典包括在花括号 {} 中 ,格式如下所示:
1. _dict={key:value} (常用)
2. _dict=dict(((key,value),))
_dict1 ={"name":"lvyq","age":12}
_dict2=dict((("name","lvyq"),("age",12),))
print(type(_dict1),_dict1)
print(type(_dict2),_dict2)
二、字典操作
1.查询 ,通过key查询
1.value=_dict['key']
2.value = _dict.get('key')
_dict = {'name':'lvyq','age':12}
name = _dict['name']
age = _dict.get('age')
print(name)
print(age)
运行结果
lvyq
12
其它方法
方法 | 说明 |
_dict.keys() | 获取所有键,在python3中,并非列表类型,是一个dict_keys类型,这是python3做的优化,使用的话需要使用类型转换 |
_dict.values() | 获取所有值 |
_dict.items() | 获取所有的键值对 |
_dict = {'name':'lvyq','age':12}
#查询所有键 keys() dict_keys 并非列表类型 ,是一个dict_keys类型,需要用list转换。python3做的优化
print("获取的值:{},对应的类型:{},转换成列表后:".format(_dict.keys(),type(_dict.keys())),list(_dict.keys()))
print("获取的值:{},对应的类型:{},转换成元组后:".format(_dict.values(),type(_dict.values())),tuple(_dict.values()))
print("获取的值:{},对应的类型:{},转换成字典后:".format(_dict.items(),type(_dict.items())),dict(_dict.items()))
运行结果
编辑
2.修改
2.添加
1. _dict('key')='值'
当key在字典中存在时,则会更新,不存在时,则往字典中添加相应的键值对
_dict = {'name':'lvyq','age':12}
print("原始值:%s"%_dict)
_dict['age']=22
print("修改后:%s"%_dict)
_dict['job']='IT'
print("修改后:%s"%_dict)
运行结果
原始值:{'name': 'lvyq', 'age': 12}
修改后:{'name': 'lvyq', 'age': 22}
修改后:{'name': 'lvyq', 'age': 22, 'job': 'IT'}
2
setdefault('key','值')
与上面不同的是当key在字典中存在时,则不会更新,同时会返回所要添加的key所对应的值,不存在,则添加并返回所添加的键值对对应的值
_dict = {'name':'lvyq','age':12}
print("新增前:%s"%_dict)
_set_vauel=_dict.setdefault('age',62)
print("修改后:{},修改的值为:{}".format(_dict,_set_vauel))
_set_vauel=_dict.setdefault('job','IT')
print("修改后:{},修改的值为:{}".format(_dict,_set_vauel))
运行结果
新增前:{'name': 'lvyq', 'age': 12}
修改后:{'name': 'lvyq', 'age': 12},修改的值为:12
修改后:{'name': 'lvyq', 'age': 12, 'job': 'IT'},修改的值为:IT
3.修改
1.使用_dict['key']的方式,可以修改值。(上面已经提到了)
2.update() ,将_dict2的值更新到_dict中,当两个字典中存在相同的key时,则后面字典中key对应的值更新至前面字典中key所对应的值
_dict.update(_dict2)
_dict = {'name':'lvyq','age':12}
print("_dict的值:%s"%_dict)
_dict2={'name':'小明','job':'IT'}
print("_dict2的值:%s"%_dict2)
_dict.update(_dict2)
print("更新后_dict的值:%s"%_dict)
运行结果
_dict的值:{'name': 'lvyq', 'age': 12}
_dict2的值:{'name': '小明', 'job': 'IT'}
更新后_dict的值:{'name': '小明', 'age': 12, 'job': 'IT'}
4.删除
1.del _dict['key'] 通过键删除键值对
2._dict.pop('key') 通过键删除,并返回对应的值
3._dict.clear() 清空
4._dict.popitem() 随机删除某组键值对(基本不用)
_dict = {'name':'lvyq','age':12,'Job':'IT'}
#根据键删除键值对
del _dict['name']
print("del 删除后结果:%s"%_dict)
#删除,并返回该键值对的值
age =_dict.pop('age')
print("删除age后:{},删除key对应的值{}".format(_dict,age))
#清空
_dict.clear()
print(_dict)
运行结果
del 删除后结果:{'age': 12, 'Job': 'IT'}
删除age后:{'Job': 'IT'},删除key对应的值12
{}
其它
字典的创建除了上面提到的两种,还可以使用fromkeys()创建
dict.fromkeys(seq,'value')
创建一个新字典,以序列 seq 中元素做字典的键,value 为字典所有键对应的初始值
_dict=dict.fromkeys(['one','two','three'],'value')
_dict2=dict.fromkeys('ABC','value')
_dict3=dict.fromkeys(['one','two','three'],[1,2])
print(_dict)
print(_dict2)
print(_dict3)
运行结算
{'one': 'value', 'two': 'value', 'three': 'value'}
{'A': 'value', 'B': 'value', 'C': 'value'}
{'one': [1, 2], 'two': [1, 2], 'three': [1, 2]}
二、字典遍历
_dict = {'name':'lvyq','age':12}
for i in _dict:
print("遍历1",i,dict[i])
for i,v in _dict.items():
print("遍历2",i,v)
推荐使用第一种,第一种效率相对较高,第二种中间存在了数据类型转换的过程