前言
在Python中,字典(Dictionary)是一种无序、可变且可迭代的数据类型,用于存储键-值对(Key-Value pairs)。字典使用大括号{}
来定义,每个键值对之间使用冒号:
分隔。
目前为止,我们已经学完了5种基本的数据类型,包括三个复杂的数据类型,分别是,列表,元组,和字典。本节我们主要来介绍字典。
一、字典的定义
1、定义一个空字典,并查看类型
字典的定义是使用花括号
d0 ={}
d1 = dict()
print(type(d0),type(d1))
# 运行结果:class 'dict'> <class 'dict'>
2、定义一个简单的字典
字典的格式是键值对,键与值要用冒号隔开,多个键值对之间使用逗号隔开。
# 冒号前面的是键,冒号后面的是值
d3 = {
"year": 2024,
"moth": 1,
"day": 16,
"name": "xingxing"
}
print(type(d3))
# 运行结果:<class 'dict'>
二、字典的键和值
1 、字典的值
可以是任意的数据类型,我们之前学过的5种基本数据类型int 、str、 float、 bool、 none都可以使用。
d4 = {
"key1": "value1",# 可以是字符串
"key2": 100, # 可以是整型数字
"key3": 3.14, # 可以是浮点数
"key4": False, # 可以是布尔值
"key5": None, # 可以是布尔值
"key6": [1,2,3], # 可以是列表
"key7": (100,), # 可以是元组
# 也可以是字典
"key8": {
"key11": {
},
"key12":[
{
"id": 101,
"name": "娃哈哈",
},
{
"id": 102,
"name": "营养快线",
},
{
"id": 103,
"name": "可口可乐",
}
]
}
}
print(type(d4),d4)
# 输出结果<class 'dict'> {'key1': 'value1', 'key2': 100, 'key3': 3.14, 'key4': False, 'key5': None, 'key6': [1, 2, 3], 'key7': (100,), 'key8': {'key11': {}, 'key12': [{'id': 101, 'name': '娃哈哈'}, {'id': 102, 'name': '营养快线'}, {'id': 103, 'name': '可口可乐'}]}}
2 、字典的键
键 是不可变类型,但是999999%的键都是字符串,
5种基本类型都是不可变类型,int、float、str、bool、none,
键不可以重复,值随意,
列表和字典都是可变类型不能作为键。
d5 = {
"name": "王思聪",
100: 100,
3.14: "这是PI",
True: "这是个bool值",
False: "这也是个bool值",
None: "这是个空",
# [1,2,3]: "这是个列表", 可变类型不可以作为键
(): "元组是不可变数据类型可以作为键",
# {}: "字典是可变类型,不可以作为键"
# True:我会覆盖之前的True对应的值
}
三、字典的获取与修改
1、字典是可变的数据类型
d0 = {
"name": "王健林",
"age": 20
}
print(d0, id(d0))
# # 设置键,如果键已存在则替换
d0["name"] = "王思聪"
print(d0, id(d0))
# # 获取键对应的值
print(d0["name"], d0["age"])
2、len,获取字典键值对个数
1 = {
"name": "王思聪",
"age": 20,
"addr": "郑州"
}
# len,获取字典键值对个数
print(len(d1))
四、字典的遍历
1、遍历所有的键for key in d.keys()
d1 = {
"name": "王思聪",
"age": 20,
"addr": "郑州"
}
for key in d1.keys():
print(key, d1[key])
# 运行结果
# name 王思聪
# age 20
# addr 郑州
2、遍历所有的值for value in d.values()
d1 = {
"name": "王思聪",
"age": 20,
"addr": "郑州"
}
for value in d1.values():
print(value)
# 运行结果
# 王思聪
# 20
# 郑州
3、遍历所有键值对for k,v in d.items()
d1 = {
"name": "王思聪",
"age": 20,
"addr": "郑州"
}
for key, value in d1.items():
print(key,value)
# 运行结果
# name 王思聪
# age 20
# addr 郑州
四、字典的操作
1、获取字典键值对的个数
d2 = {
"name": "王思聪",
"age": 20,
"addr": "郑州"
}
print(len(d2))
# 运行结果:3
2、判定是否有这个键
d2 = {
"name": "王思聪",
"age": 20,
"addr": "郑州"
}
print("name" in d2, "sex" in d2)
# True False
3、常用方法
3.1、遍历
①、for key in d.keys()
遍历所有的键
d2 = {
"name": "王思聪",
"age": 20,
"addr": "郑州"
}
for key in d2.keys():
print(key,d2[key])
②、for value in d.values()
遍历所有的值
d2 = {
"name": "王思聪",
"age": 20,
"addr": "郑州"
}
for value in d2.values():
print(value)
③、for k,v in d.items()
遍历所有的键值对
d2 = {
"name": "王思聪",
"age": 20,
"addr": "郑州"
}
for key,value in d2.items():
print(key,value)
3.2、删除
①、value = pop(key)
根据键删除键值对 返回值
d2 = {
"name": "王思聪",
"age": 20,
"addr": "郑州"
}
r = d2.pop("name")
print(r,d2,"name" in d2)
# 运行结果:王思聪 {'age': 20, 'addr': '郑州'} False
②、key, value = popitem()
删除最后一个键值对,并且返回元组
d2 = {
"name": "王思聪",
"age": 20,
"addr": "郑州"
}
# # 删除最后一个写的键值对(Python独有),并且返回元组
r = d2.popitem()
print(r, d2)
# 运行结果:('addr', '郑州') {'name': '王思聪', 'age': 20}
③、clear()
清空
d2 = {
"name": "王思聪",
"age": 20,
"addr": "郑州"
}
# 清空
r = d2.clear()
print(d2)
# 运行结果:{}
3.3、修改
①、update({ })
将字典中所有的键值对合并到原始字典,如果键已存在则替换
# 将字典中所有键值对合并到原始字典,如果键已存在,则替换
# d3.update({
# "sex": "男",
# "age": 25
# })
# print(d3)
②、dict.fromkeys(keys, value)
创建一个新字典,所有的值是value,键来源于keys列表
# d4 = dict.fromkeys(["key1","key2","key3"], 100)
# print(d4)
③、setdefault(key, value)
如果键不存在,则添加,返回新值
如果键已经存在,则不添加,返回原始数据
# 如果已经存在该键,则不添加,返回原始值
# 如果不存在则添加
r = d3.setdefault("age", 25)
print(d3, r)
3.4、get
①、根据键取值,取不到返回None
取不到也可以指定默认值
d4 = {
"name": "王思聪",
"age": 20,
"addr": "郑州"
}
# 根据键取值,取不到返回None,也可以指定默认值
print(d4.get("name1"))
②、字典[键]
如果取不到 会报错
d4 = {
"name": "王思聪",
"age": 20,
"addr": "郑州"
}
# 根据键取值,取不到返回None,也可以指定默认值
# print(d4.get("name1"))
# 默认的字典[],如果取不到报错
print(d4["name1"])
拜~