08_Python数据类型_字典

在这里插入图片描述

Python的基础数据类型

  • 数值类型:整数、浮点数、复数、布尔
  • 字符串
  • 容器类型:列表、元祖、字典、集合

字典

  • 字典(Dictionary)是一种可变容器模型,它可以存储任意类型对象,其中每个对象都存储为一个键值对。
  • 字典是Python中唯一内建的映射类型,通常用于存储具有映射关系的数据。
  • 一个元素分为两部分:key:value,键值对。

定义字典

字典是由大括号 {} 包围的键值对集合,每个键值对由冒号 : 分隔,不同的键值对之间用逗号 , 分隔。

# 创建一个空字典
empty_dict = {}
print(empty_dict)
# 创建一个包含几个键值对的字典
my_dict = {'key1': 'value1', 'key2': 'value2', 'key3': 'value3'}
print(my_dict)

字典的特性

  • 字典中的键必须是唯一的,而值不必是唯一的。
  • 字典中的键必须是不可变的数据类型,如字符串、数字或元组,但不能是列表或字典。
  • 字典是无序的,尽管在Python 3.7+中,字典会保持插入顺序。

访问字典元素

可以通过键来访问字典中的值。

# 访问字典中的值
value = my_dict['key1']  # 结果是 'value1'
print(value)

如果尝试访问一个不存在的键,将会抛出 KeyError。

# value4 = my_dict['key4']  # 结果是 KeyError

字典操作

字典支持多种操作,如下所示:

  • 添加键值对:直接赋值给新的键。
  • 修改键值对:直接赋值给已存在的键。
  • 删除键值对:使用 del 语句或 pop() 方法。
print(my_dict)
# 添加键值对
my_dict['new_key'] = 'new_value'
print(my_dict)
my_dict.setdefault('new_key2', 'new_value2')
print(my_dict)
# 修改键值对
my_dict['key1'] = 'updated_value'
print(my_dict)
# 删除键值对
del my_dict['key2']
print(my_dict)
# 或者, 根据key删除键值对。
removed_value = my_dict.pop('key3')
print(my_dict)

字典方法

字典提供了许多有用的方法,如:

  • keys():返回字典中的所有键。
  • values():返回字典中的所有值。
  • items():返回字典中的所有键值对。
  • get():返回指定键的值,如果键不存在,则返回默认值(默认为 None)。没有找到不会报错,可以设置查找不到的返回默认值。
  • update():使用另一个字典的键值对更新当前字典。
# 获取字典中的所有键
keys = my_dict.keys()
print(keys)
# 获取字典中的所有值
values = my_dict.values()
print(values)
# 获取字典中的所有键值对,返回元组的形式。
items = my_dict.items()
print(items)
# 安全地获取字典中的值
value = my_dict.get('key1', 'default_value')
print(value)
# 更新字典
my_dict.update({'key4': 'value4', 'key5': 'value5'})
print(my_dict)

遍历字典

  • 默认遍历key
  • 可以遍历key
  • 可以遍历value
  • 可以遍历键值对
# 默认遍历key
for i in my_dict:
  print(i)

# 遍历key
for k in my_dict.keys():
  print(k)

# 遍历value
for v in my_dict.values():
  print(v)

# 遍历键值对
for k, v in my_dict.items():
  print(k, v)

字典推导式

与列表推导式类似,字典推导式可以用来生成字典。

# 创建一个字典,键为0-9每个数字,值为每个数字的平方
squared_dict = {x: x**2 for x in range(10)}
print(squared_dict)
# 字典推导式
new_dict = {k:v for k,v in my_dict.items()}
print(new_dict)
# 带条件的字典推导式
my_dict6 = {'张三':95, '李四':60, '王五':85, '赵六':30}
new_dict = {k:v for k,v in my_dict6.items() if v >= 85}
print(new_dict)

字典的复制

字典的复制可以通过直接赋值、浅拷贝或深拷贝来实现。

  • 直接赋值:新变量引用同一个字典。
  • 浅拷贝:创建一个新字典,但不复制内部对象的引用。
  • 深拷贝:创建一个新字典,并递归地复制内部对象。
import copy

# 直接赋值
dict1 = {'a': 1, 'b': 2,'c':{'a': 1}}
dict2 = dict1  # dict2 是 dict1 的引用
print("dict1:",dict1)
print("dict2:",dict2)
print("id(dict1):",id(dict1))
print("id(dict1['c']):",id(dict1['c']))
print("id(dict2):",id(dict2))
# 浅拷贝
dict3 = copy.copy(dict1)
print("dict3:",dict3)
print("id(dict3):",id(dict3))
print("id(dict3['c']):",id(dict3['c']))
# 深拷贝
dict4 = copy.deepcopy(dict1)
print("dict4:",dict4)
print("id(dict4):",id(dict4))
print("id(dict4['c']):",id(dict4['c']))

字典是Python中非常强大的数据结构,它提供了灵活的数据存储和访问方式,适用于各种需要键值对映射的场景。

附件

本文对应的jupyter notebook源码链接,欢迎下载练习:https://download.csdn.net/download/fx_yzjy101/89760981

如有问题请留言。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值