可变容器模型,可存储任意类型对象
格式:{key1:value1,key2:value2}
key
:唯一、不可变(字符串、数字、tuple)
值
:可以重复、类型任意
1、创建字典
# 创建
empty_dict = {} # 空字典
empty_dict2 = dict() # 空字典
print(len(empty_dict)) # 0 # 长度,即字典元素个数,即键对的个数
print(type(empty_dict2)) # <class 'dict'> # 类型
tiny_dict = {"name":"bai","name":"cao","age":10} # key重复,则仅后一个被记住
print(tiny_dict) # {'name': 'cao', 'age': 10}
# tiny_dict = {[1,2]:1,{}:2} # key必须不可变,否则报错TypeError: unhashable type: 'list'
# 浅复制:仅复制对象本身,对象内子对象仍是同一存储位置
tiny_dict3 = tiny_dict.copy()
print(id(tiny_dict),id(tiny_dict3)) # 1779435572608 1779440041536
# 创建一个新字典
tiny_dict4 = tiny_dict.fromkeys([1,2,3,4]) # 以序列作为字典的键,以val作为所有键值对的值,默认None
print(tiny_dict4) # {1: None, 2: None, 3: None, 4: None}
tiny_dict4 = tiny_dict.fromkeys((1,2,3,3),"val") # 序列中重复元素会被踢除;注意key区分大小写
print(tiny_dict4) # {1: 'val', 2: 'val', 3: 'val'}
2、访问
# 访问
tiny_dict = {"name":"bai","age":7,"Class":[1,2]}
print(tiny_dict["name"]) # 使用dict[key]访问
# print(tiny_dict["grade"]) # 没有则报错KeyError: 'grade'
# 获取指定键
print(tiny_dict.get("name")) # 返回指定键的值,若不在字典中,返回default(默认None)
print(tiny_dict.get("grade", "default")) # default
# key in dict
print("name"in tiny_dict) # 在返回True,不在返回False # True
for key in tiny_dict: # for循环访问,依次获取键
print(key) # name age Class
# 键值对
print(tiny_dict.items()) # dict_items([('name', 'bai'), ('age', 7), ('Class', [1, 2])])
for k,v in tiny_dict.items(): # 支持for获取
pass
# 获取键
print(tiny_dict.keys()) # dict_keys(['name', 'age', 'Class'])
for k in tiny_dict.keys(): # 支持for获取
pass
# 获取值
print(tiny_dict.values()) # dict_values(['bai', 7, [1, 2]])
for v in tiny_dict.values():
pass
3、修改
# 修改
tiny_dict["age"] = 10 # 已有键,则更新值
tiny_dict["grade"] = 100 # 无键,则新增键值对
print(tiny_dict) # {'name': 'bai', 'age': 10, 'Class': [1, 2], 'grade': 100}
# 把另一字典的键值对更新到dict里
tiny_dict5 = {"name":5,"no.":5}
tiny_dict.update(tiny_dict5) # 若键相同,则被覆盖
print(tiny_dict) # {'name': 5, 'age': 10, 'Class': [1, 2], 'grade': 100, 'no.': 5}
# 添加键值对
tiny_dict5.setdefault("name",10) # 已有的键,则不影响
print(tiny_dict5) # {'name': 5, 'no.': 5}
tiny_dict5.setdefault("age") # 不存在的键,则会添加;对应的值是default(默认None)
print(tiny_dict5) # {'name': 5, 'no.': 5, 'age': None}
print("--------")
4、删除
# 删除
del tiny_dict["Class"] # 删除键Class
print(tiny_dict) # {'name': 'bai', 'age': 10, 'grade': 100}
tiny_dict.clear() # 清空字典,即变为空字典
print(tiny_dict) # {}
del tiny_dict # 删除字典
# print(tiny_dict) # NameError: name 'tiny_dict' is not defined
tiny_dict = {'name': 'bai', 'age': 10, 'Class': [1, 2], 'grade': 100} # 已删除重新创建
# 删除字典key对应的值,并返回被删除的值;若k不存在,则报错
print(tiny_dict.pop("name")) # bai
print(tiny_dict) # {'age': 10, 'Class': [1, 2], 'grade': 100}
# tiny_dict.pop("1") # KeyError: '1'
# 返回并删除字典中最后一对键值(tuple)
print(tiny_dict.popitem()) # ('grade', 100)
print(tiny_dict) # {'age': 10, 'Class': [1, 2]}
5、内置函数
# 内置
tiny_str = str(tiny_dict) # 转为字符串
print(tiny_str,type(tiny_str)) # {'age': 10, 'Class': [1, 2]} <class 'str'>
# 按顺序遍历字典中所有键
print(sorted(tiny_dict5)) # ['age', 'name', 'no.']
6、嵌套
# 嵌套
# 字典列表
dict_list = [{"name":"men","age":11},
{"name": "bai", "age": 15},
{"name":"cao","age":20}]
# 列表字典
list_dict ={
"name":["bai","cao","men"],
"age":[15, 20,11]
}
# 字典字典
dict_dict ={
"bai":{"age":15,"Class":"Py"},
"cao":{"age":20,"Class":"c"},
"men":{"age":11,"Class":"java"}
}
7、参考
1、Python3 字典
2、Python3 字典
3、Python3基础-字典
网友评论