Python字典基础:创建、运算与方法详解
本文详细介绍Python中字典数据类型的核心操作。内容涵盖使用{}字面量和dict()函数创建字典,掌握len()获取长度及for循环遍历键的技巧。重点解析成员运算、索引访问(含KeyError处理)以及get、keys、values、items、pop、update等常用方法,帮助开发者高效处理键值对数据。
1、字典的概念
在Python语言中,字典是一种内置的数据类型,其结构与现实世界的字典类似。它通过键值对(Key-Value Pair)的形式组织数据,允许用户通过特定的键来查找和操作对应的值。这就好比字典中的每个汉字(键)都对应着详细的解释(值),键与值的组合构成了字典中的一个条目,而整个字典则由众多这样的条目集合而成。
2、创建和使用字典
在Python中,可以使用花括号{}字面量语法来创建字典,这与创建集合的语法符号相同。区别在于,字典内部的元素必须以键值对的形式存在,每个元素由冒号:分隔的两个值组成,冒号前是键,冒号后是值,各对之间使用逗号,进行分隔。
具体语法格式如下:
dict = {key1 : value1, key2 : value2 }
2.1 创建字典
# 创建字典
dict1 = {"姓名": "甜甜"}
print(type(dict1), dict1) # <class 'dict'> {'姓名': '甜甜'}
dict2 = {
"姓名": "甜甜",
"性别": "女",
"年龄": "19"
}
print(dict2) # {'姓名': '甜甜', '性别': '女', '年龄': '19'}
可以使用dict()构造函数或者字典推导式(生成式)语法来创建字典,示例代码如下:
# 使用dict 创建对象,键不可以加""引号
dict1 = dict(姓名="甜甜", 性别="女", 年龄="19")
print(type(dict1), dict1) # <class 'dict'> {'姓名': '甜甜', '性别': '女', '年龄': '19'}
list1 = ["姓名", "性别", "年龄"]
list2 = ["甜甜", "女", "19"]
# zip()函数将对象中对应的元素打包成一个个元组,返回由这些元组组成的对象
dict2 = dict(zip(list1, list2))
print(dict2) # {'姓名': '甜甜', '性别': '女', '年龄': '19'}
# 使用生成列创建字典
dict3 = {x: x ** 3 for x in range(6)}
print(dict3) # {0: 0, 1: 1, 2: 8, 3: 27, 4: 64, 5: 125}
可以使用len(dict)函数得到字典中元素的个数,也就是键的总数。
需要注意的是,for循环在遍历字典时,默认只能对键(Key)进行有效操作。
dict1 = {'姓名': '甜甜', '性别': '女', '年龄': '19'}
print(len(dict1)) # 3
for ch in dict1:
print(ch)
'''
姓名
性别
年龄
'''
3、字典的运算
对于字典而言,成员运算和索引运算(字典的索引依据是键值对中的键)是至关重要的操作。成员运算用于判断指定的键是否存在于字典中,而索引运算则用于获取对应的值,或者对值进行修改以及添加新的键值对。此外,字典中的键必须是不可变类型,例如整数(int)、浮点数(float)、字符串(str)、元组(tuple)等。需要注意的是,字典本身是可变类型。
示例代码:
dict1 = {'姓名': '甜甜', '性别': '女', '年龄': '19'}
# 成员运算
print("姓名" in dict1, "性别" not in dict1) # True False
# 先判断在修改
if "姓名" in dict1:
dict1["姓名"] = '王甜甜'
print(dict1) # {'姓名': '王甜甜', '性别': '女', '年龄': '19'}
# 通过索引为dict1 增加数据
dict1["爱好"] = "旅游"
print("爱好" in dict1) # True
# 对字典的键进行循环并通索引运算获取键对应的值
for key in dict1:
print(f'{key}: {dict1[key]}')
'''
姓名: 王甜甜
性别: 女
年龄: 19
爱好: 旅游
'''
注意:在通过索引运算获取字典中的值时,如果指定的键在字典中不存在,程序将会引发KeyError异常。
3.1 字典的方法
字典提供了多种方法,主要用于对键值对进行各种相关操作:
# 字典的嵌套
students = {
10001: {"name": "小明", "sex": "男", "age": 18},
10002: {"name": "小红", "sex": "女", "age": 16},
10003: {"name": "小白", "sex": "女", "age": 19},
10004: {"name": "小周", "sex": "男", "age": 20}
}
# 使用get方法通过键获取对应的值,如果取不到是返回的默认值(默认为None)
print(students.get(10002)) # {'name': '小红', 'sex': '女', 'age': 16}
print(students.get(10005)) # None
print(students.get(10005, "没有这个学生")) # 没有这个学生
# 获取字典中所有的键
print(students.keys()) # dict_keys([10001, 10002, 10003, 10004])
# 获取字典中所有的值
print(students.values()) # dict_values([{...}, {...}, {...}, {...}])
# 获取字典中所有的键值对
# dict_items([(10001, {...}), (10002, {....}), (10003, {...}), (10004, {...})])
print(students.items())
# 对字典中所有的键值对进行循环遍历
for key, value in students.items():
print(key, '--->', value)
# 使用pop方法通过键删除对应的键值对并返回该值
stu1 = students.pop(10002)
print(stu1) # {'name': '小红', 'sex': '女', 'age': 16}
print(len(students)) # 3
# 如果删除的不在字典中,会引发KeyError异常
# stu2 = students.pop(10005) # KeyError: 10005
# 使用popitem方法删除字典中最后一组键值对并返回对应的二元组
# 如果字典中没有元素,调用该方法将引发KeyError异常
key, value = students.popitem()
print(key, value) # 10004 {'name': '小周', 'sex': '男', 'age': 20}
# setdefault可以更新字典中的键对应的值或向字典中存入新的键值对
# setdefault方法的第一个参数是键,第二个参数是键对应的值
# 如果这个键在字典中存在,更新这个键之后会返回原来与这个键对应的值
# 如果这个键在字典中不存在,方法将返回第二个参数的值,默认为None
result = students.setdefault(10005, {"name": "小绿", "sex": "女", "age": 18})
print(result) # {'name': '小绿', 'sex': '女', 'age': 18}
print(students) # {10001: {...}, (10003, {...}), 10005: {...}}
# 使用update更新字典元素,相同的键会用新值覆盖掉旧值,不同的键会添加到字典中
others = {
10005: {"name": "小南", "sex": "男", "age": 19},
10006: {"name": "小北", "sex": "男", "age": 19},
10007: {"name": "小冬", "sex": "男", "age": 19}
}
students.update(others)
# {10001: {...}, 10003: {...}, 10005: {...}, 10006: {...}, 10007: {...}}
print(students)
到此这篇关于Python字典的基础操作的文章就介绍到这了,更多相关Python字典内容请搜索本站以前的文章或继续浏览下面的相关文章希望大家以后多多支持本站!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









