➢字典是无序的对象集合, 使用键-值(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循环,只能获取key | for key in dict1: print(key, dict1[key]) |
遍历字典(2) | 配合items方法,获取key和val | for 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 |
合并字典 | update | dict1.update(dict2) |
把两个列表转为字典 | dict+zip方法 | dict(zip(list1,list2)) |
把一个嵌套列表转为字典 | dict方法 | dict2 = dict([['key1', 'value1']]) |
清除字典内的元素 | clear方法 | dict1.clear() |
获取字典长度 | len() | |
获取大的key | max() | |
获取小的key | min() | |
其它类型对象转换成字典 | dict() | dict([(1, 2), (2, 3)]) |