python学习day-03(容器类型:dict)

字典是Python中一种可变容器模型,用于存储键值对(key-value)数据。它通过键来快速访问值,具有高效的查找性能。以下是字典的核心特性和操作方法:

字典的创建

字典用花括号 {}dict() 函数创建,键值对用冒号 : 分隔:

dict1 = {'name': 'Alice', 'age': 25}  # 直接创建
dict2 = dict(name='Bob', age=30)      # 使用dict()构造函数

字典的基本操作

  • 访问值:通过键直接访问,若键不存在会抛出 KeyError
    print(dict1['name'])  # 输出: Alice
    
  • 安全访问:get方法通过key取值,如果key不存在,返回默认值,也可以自己设置默认值
    print(dict1.get('gender', 'Unknown'))  # 输出: Unknown
    
  • 修改值:直接对键赋值:
    dict1['age'] = 26  # 更新age的值
    
  • 添加键值对:对新键赋值:
    dict1['gender'] = 'Female'  # 新增键值对
    

字典的常用方法

  • 删除元素
    del dict1['age']          # 删除指定键
    value = dict1.pop('name') # 删除并返回键对应的值
    
  • 遍历字典
    for key in dict1:                   # 遍历键
        print(key, dict1[key])
    
    for key, value in dict1.items():    # 同时遍历键和值
        print(key, value)
    
  • 获取所有键或值
    keys = dict1.keys()    # 获取所有键的视图
    values = dict1.values()# 获取所有值的视图
    

字典推导式

类似列表推导式,可快速生成字典:

squares = {x: x**2 for x in range(5)}  # {0: 0, 1: 1, 2: 4, ...}

注意事项

  • 键的唯一性:键必须是不可变类型(如字符串、数字、元组),且不允许重复。
  • 无序性:Python 3.7+ 中字典保持插入顺序,但不应依赖此特性进行排序操作。

 

判断成员关系:列表,元组和字典

在 Python 中,判断一个元素是否存在于某个数据结构(如列表、元组或字典)中,可以使用 in 关键字或特定的方法。以下是针对不同数据结构的成员关系判断方法:

列表和元组

列表和元组是序列类型,支持直接使用 in 关键字判断元素是否存在。它们的判断方式相同。

my_list = [1, 2, 3, 4, 5]
my_tuple = (10, 20, 30, 40, 50)

# 判断元素是否在列表中
print(3 in my_list)  # 输出: True
print(6 in my_list)  # 输出: False

# 判断元素是否在元组中
print(30 in my_tuple)  # 输出: True
print(60 in my_tuple)  # 输出: False

字典

字典是键值对结构,in 关键字默认检查的是键而非值。如果需要检查值或键值对,需使用特定方法。

my_dict = {'a': 1, 'b': 2, 'c': 3}

# 判断键是否在字典中
print('a' in my_dict)         # 输出: True
print('d' in my_dict)         # 输出: False

# 判断值是否在字典中
print(2 in my_dict.values())  # 输出: True
print(4 in my_dict.values())  # 输出: False

# 判断键值对是否在字典中
print(('a', 1) in my_dict.items())  # 输出: True
print(('a', 2) in my_dict.items())  # 输出: False

性能差异

  • 列表和元组:成员关系检查的时间复杂度为 O(n),因为需要遍历整个序列。
  • 字典:键的检查平均时间复杂度为 O(1),因为字典基于哈希表实现。值的检查仍需 O(n),因为要遍历所有值。

注意事项

  • 字典的 in 操作符仅检查键,不检查值。
  • 如果需要频繁检查成员关系,字典(键查询)比列表或元组更高效。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值