➢字典是无序的对象集合, 使用键-值(key-value)存储,具有极快的查找速度。
➢键(key)必须使用不可变类型。
➢同一个字典中,键(key)必须是唯一的。
1、字典的定义
info = {'name':'班长', 'id':100, 'sex':'f', 'address':'地球亚洲中国北京'}
说明:
字典和列表一样,也能够存储多个数据 。
列表中找某个元素时,是根据下标进行的 。
字典中找某个元素时,是根据'名字'(就是冒号:前面的那个值,例如上面代码中 的'name'、'id'、'sex') 。
字典的每个元素由2部分组成,键:值。例如 'name':'班长' ,'name'为键,'班长'为值。
2 、根据键访问值
info = {"name":"haha","age":66}
#字典的访问
print(info["name"])
print(info["age"])
若访问不存在的键,则会报错
info = {"name":"haha","age":66}
#访问了不存在的键
print(info["gender"]) #KeyError: 'gender' 直接访问会报错
在我们不确定字典中是否存在某个键而又想获取其值时,可以使用get方法,还可以设置默认值:
info = {"name":"haha","age":66}
print(info.get("gender")) #None 使用get方法,没有找到相应的键,默认返回None
print(info.get("gender","M")) #默认值是"M" 可以设定默认值
3、常用操作
3.1、增加
info = {"name":"可可西里","age":12}
newID = input("请输入新的学号")
info["id"] = newID
print(info["id"])
3.2、删除del
删除key
info = {"name":"可可西里","age":12}
print("删除前:%s"%info["name"])
del info["name"]
print("删除后:%s"%info["name"]) #KeyError: 'name' 删除的是键值对
删除字典
info = {"name":"可可西里","age":12}
print("删除前:%s"%info) #NameError: name 'info' is not defined
del info
print("删除后:%s"%info)
3.3、删除clear
info = {"name":"可可西里","age":12}
print("清空前:%s"%info)
info.clear()
print("清空后:%s"%info) #清空后:{}
3.4、修改
info = {"name":"可可西里","age":12}
info["age"] = 20
print(info["age"])
3.5、查找
info = {"id":1,"name":"可可西里","age":12}
print(info.keys()) #拿到所有的键(列表) dict_keys(['id', 'name', 'age'])
print(info.values()) #拿到所有的值(列表) dict_values([1, '可可西里', 12])
print(info.items()) #拿到所有的项(元组) dict_items([('id', 1), ('name', '可可西里'), ('age', 12)])
3.6、遍历
3.6.1、遍历所有的键
for key in info.keys():
print(key)
3.6.2、遍历所有的值
for value in info.values():
print(value)
3.6.3、遍历所有的键值对
for key,value in info.items():
print("key=%s,value=%s"%(key,value))
3.6.4、用枚举类型 同时拿到list下标和内容
操作名称操作方法举例
访问字典中的元素 (1)通过key访问,key不存在会抛出异常print(dict1[“小明”])
访问字典中的元素 (2)通过get方法,不存在返回None, 不抛出异常print(dict1.get(“”小明))
遍历字典(1)通过for循环,只能获取keyfor key in dict1: print(key, dict1[key])
遍历字典(2)配合items方法,获取key和valfor key, val in dict1.items(): print(key, val)
直接获取所有key和 value使用keys和values方法print(dict1.values()) print(dict1.keys())
修改val直接通过key修改dict1['小明'] = 2003
新增键值对直接新增dict1[‘小李'] = 2005
字典元素的删除通过key删除del dict1['小李']
字典元素的弹出通过pop方法dict1.pop("小李")
判断key是否存在in“key” in dict1
合并字典updatedict1.update(dict2)
把两个列表转为字典dict+zip方法dict(zip(list1,list2))
把一个嵌套列表转为字典dict方法dict2 = dict([['key1', 'value1']])
清除字典内的元素clear方法dict1.clear()
获取字典长度len()
获取大的keymax()
获取小的keymin()
其它类型对象转换成字典dict()dict([(1, 2), (2, 3)])