Python 字典(dict)学习笔记

一、字典的基本概念

字典是 Python 中一种非常重要的数据类型,它就像一个“储物柜”,每个物品(值,value)都有对应的标签(键,key),通过标签能快速找到物品,而不是像列表那样通过位置找元素。

特点

  • 通过键访问数据:用唯一的键(key)来获取对应的值(value),不是靠下标索引,比如字典里存“姓名”对应“小明”,用字典["姓名"]就能拿到“小明” 。
  • 无序集合:字典里的键值对没有固定顺序,每次遍历可能顺序不同,但不影响使用。
  • 可变长度、异质、可嵌套:长度能动态增减,值可以是字符串、数字、列表、甚至另一个字典等不同类型,也能把字典放到列表或其他字典里。

二、字典的创建(声明)方式

1. 空字典

用大括号{}创建,就像一个空的储物柜,后续可以往里添加键值对。

empty_dict = {}
print(empty_dict)  # 输出:{}

2. 直接定义键值对

把键值对写在{}里,键和值用:隔开,不同键值对用,分隔。比如存食品价格:

foods = {
    "汉堡": 15,
    "烤鸡": 28,
    "薯条": 12
}
print(foods)  # 输出:{'汉堡': 15, '烤鸡': 28, '薯条': 12}

3. 用dict()函数创建

  • 方式一:通过key=value形式,适合键是简单字符串的情况。
person = dict(name="小明", age=18)
print(person)  # 输出:{'name': '小明', 'age': 18}
  • 方式二:传入包含键值对元组的列表,元组里第一个元素是键,第二个是值。
student = dict([("name", "小红"), ("gender", "女")])
print(student)  # 输出:{'name': '小红', 'gender': '女'}

4. 用dict.fromkeys()创建

基于一个键的列表,创建值默认是None的字典,适合快速初始化有相同默认值的字典。

keys = ["a", "b", "c"]
new_dict = dict.fromkeys(keys)
print(new_dict)  # 输出:{'a': None, 'b': None, 'c': None}

# 也能指定默认值
new_dict_with_value = dict.fromkeys(keys, 0)
print(new_dict_with_value)  # 输出:{'a': 0, 'b': 0, 'c': 0}

三、字典的常用操作

(一)查询操作

字典查询就是根据键找值,有多种方式,应对不同需求。

1. 字典[键]

直接用字典[键]的形式取值,键存在能拿到对应值,键不存在会报错。

info = {
    "name": "小明",
    "age": 18
}
print(info["name"])  # 输出:小明
# print(info["gender"])  # 键不存在,会报错 KeyError: 'gender'

2. 字典.get(键)

get方法取值,键存在返回对应值,键不存在返回None(也能自己指定默认返回值),不会报错,很安全。

print(info.get("age"))  # 输出:18
print(info.get("gender"))  # 键不存在,输出:None
# 指定默认返回值,键不存在时返回设定的内容
print(info.get("gender", "未知"))  # 输出:未知

3. 字典.keys()

获取字典所有的键,返回的结果可以遍历,能逐个拿到字典里的键。

keys = info.keys()
print(keys)  # 输出:dict_keys(['name', 'age'])
for key in keys:
    print(key)  # 依次输出:name  、 age 

4. 字典.values()

获取字典所有的值,同样可遍历,拿到字典里的各个值。

values = info.values()
print(values)  # 输出:dict_values(['小明', 18])
for value in values:
    print(value)  # 依次输出:小明  、 18 

5. 字典.items()

获取字典所有的键值对,以元组(键, 值)的形式返回,遍历它能拿到每一组键和值。

items = info.items()
print(items)  # 输出:dict_items([('name', '小明'), ('age', 18)])
for key, value in items:
    print(f"键:{key},值:{value}") 
    # 输出:键:name,值:小明  ; 键:age,值:18 

(二)增加、修改数据

字典里增加或修改数据,都可以用字典[键] = 数据的形式,根据键是否存在来决定是新增还是修改。

1. 新增数据

当字典里没有这个键时,执行字典[键] = 数据就是新增键值对。

foods = {
    "汉堡": 15,
    "薯条": 12
}
# 新增“烤鸡”这个键值对
foods["烤鸡"] = 28
print(foods)  # 输出:{'汉堡': 15, '薯条': 12, '烤鸡': 28}

2. 修改数据

当字典里已经有这个键时,执行字典[键] = 数据就是修改对应的值。

# 把“汉堡”的价格从15改成16
foods["汉堡"] = 16
print(foods)  # 输出:{'汉堡': 16, '薯条': 12, '烤鸡': 28}

3. 用update()合并字典

可以把另一个字典的键值对合并到当前字典里,键存在就更新值,键不存在就新增。

original_dict = {"a": 1, "b": 2}
new_dict = {"b": 3, "c": 4}
original_dict.update(new_dict)
print(original_dict)  # 输出:{'a': 1, 'b': 3, 'c': 4},b的值被更新,c是新增的

(三)删除数据

删除字典里的键值对,常用del语句和pop()方法。

1. del语句删除

直接用del 字典[键],删除指定键值对,没有返回值,字典里就没有这个键值对了。

info = {
    "name": "小明",
    "age": 18
}
del info["age"]
print(info)  # 输出:{'name': '小明'}

2. pop()方法删除

字典.pop(键)会删除指定键值对,并且返回被删除的值,方便后续用到这个值。

foods = {
    "汉堡": 15,
    "薯条": 12
}
deleted_value = foods.pop("汉堡")
print(deleted_value)  # 输出:15 ,拿到被删除的值
print(foods)  # 输出:{'薯条': 12} ,汉堡对应的键值对被删除

四、字典的遍历

常结合for循环,用keys()values()items()方法遍历字典的键、值、键值对。

1. 遍历键

info = {
    "name": "小明",
    "age": 18
}
for key in info.keys():
    print(key)  # 输出:name  、 age 

2. 遍历值

for value in info.values():
    print(value)  # 输出:小明  、 18 

3. 遍历键值对

for key, value in info.items():
    print(f"键:{key},值:{value}") 
    # 输出:键:name,值:小明  ; 键:age,值:18 

五、综合示例(字典操作实践)

下面通过一个管理个人信息字典的示例,把前面的操作串起来看看:

# 初始化个人信息字典
person_info = {
    "name": "小明",
    "age": 18,
    "gender": "男"
}

# 1. 查询操作
print("查询name的值:", person_info["name"])  # 用[]查询
print("查询age的值(用get):", person_info.get("age"))
print("所有键:", list(person_info.keys()))  # 转成列表方便查看
print("所有值:", list(person_info.values()))
print("所有键值对:", list(person_info.items()))

# 2. 增加、修改操作
# 新增数据
person_info["tel"] = "123456789"
print("新增tel后的字典:", person_info)
# 修改数据
person_info["age"] = 19
print("修改age后的字典:", person_info)

# 3. 删除操作
# 用del删除gender
del person_info["gender"]
print("删除gender后的字典:", person_info)
# 用pop删除tel并拿到值
deleted_tel = person_info.pop("tel")
print("被删除的tel值:", deleted_tel)
print("删除tel后的字典:", person_info)

# 4. 遍历操作
print("遍历键值对:")
for key, value in person_info.items():
    print(f"键:{key},值:{value}")

运行这段代码,就能看到字典各种操作的执行效果啦,多动手试试,就能熟练掌握字典的用法咯,字典在处理像用户信息、商品数据等有对应关系的数据时特别好用,赶紧用起来吧!

1 条评论

  • @ 2025-6-24 19:03:42
    # 方式1:直接通过键值对创建字典
    d1 = {"键1": 100, "键2": 50}
    print(d1)  # 输出:{'键1': 100, '键2': 50}
    # 方式2:创建空字典
    d2 = {}
    print(d2, type(d2))  # 输出:{} <class 'dict'>
    # 说明:空字典的type为dict,是Python中用于存储键值对的数据结构
    # 方式3:使用dict()函数并以关键字参数形式创建字典
    d3 = dict(addr="中国", name="张三", age=15)
    print(d3)  # 输出:{'addr': '中国', 'name': '张三', 'age': 15}
    # 说明:关键字参数的键会自动转为字符串,值可以是任意类型
    # 方式4:使用dict()函数并传入元组列表创建字典
    d4 = dict([("addr", "中国"), ("name", "张三"), ("age", 65)])
    print(d4)  # 输出:{'addr': '中国', 'name': '张三', 'age': 65}
    # 说明:每个元组包含(键, 值),适用于键需要动态生成或包含特殊字符的场景
    # 方式5:使用fromkeys()类方法创建字典
    d5 = dict.fromkeys(["addr", "name", "age", "sex"])
    print(d5)  # 输出:{'addr': None, 'name': None, 'age': None, 'sex': None}
    # 说明:
    # 1. fromkeys()会以列表元素为键创建字典
    # 2. 若不指定值,默认所有键对应的值为None   Python 等编程语言中,None是表示 “空值” 的关键字
    # 3. 可通过第二个参数指定初始值,如dict.fromkeys(keys, 0)
    
    
    • 1