当前位置: 首页 > wzjs >正文

淘宝客导购网站 丢单优化设计电子课本

淘宝客导购网站 丢单,优化设计电子课本,可视化网站建设软件,西安做网站优化的公司字典(Dictionary)是 Python 中一种强大的键值对存储结构,具有极高的灵活性和查找效率。本文将详细讲解字典的定义、特性、常用操作、深浅拷贝及应用场景,帮助你熟练掌握字典的使用技巧。 一、字典的基本定义与特性 1. 字典的格式…

字典(Dictionary)是 Python 中一种强大的键值对存储结构,具有极高的灵活性和查找效率。本文将详细讲解字典的定义、特性、常用操作、深浅拷贝及应用场景,帮助你熟练掌握字典的使用技巧。

一、字典的基本定义与特性

1. 字典的格式

字典以键值对(key-value) 形式存储数据,格式为:
字典名 = {键1: 值1, 键2: 值2, ...}

  • 键(key)与值(value)之间用冒号 : 分隔
  • 键值对之间用逗号 , 分隔
  • 整体包裹在大括号 {} 中
  • 键必须是不可变类型(如字符串、数字、元组),且具有唯一性;值可以是任意数据类型(包括列表、字典等)
# 定义字典
dic = {'name': 'bingbing', 'age': 18, 'hobbies': ['reading', 'coding']}
print(type(dic))  # <class 'dict'># 键的唯一性:重复键会被覆盖
dic2 = {'name': 'bingbing', 'name': 'susu'}
print(dic2)  # {'name': 'susu'}(后定义的键值对覆盖前面的)

 

2. 字典的核心特性

  • 无序性:Python 3.7 之前字典是无序的,3.7 及以后保证插入顺序(但仍不支持下标访问)
  • 可变性:支持动态添加、修改、删除键值对
  • 高效查找:通过键查找值的时间复杂度为 O (1),远快于列表的遍历查找

二、字典的常用操作

1. 访问元素(查询)

字典不支持下标访问,需通过键名获取对应值,主要有两种方式:

方式说明示例
字典名[键名]直接访问,键不存在则报错dic['age'] → 18
字典名.get(键名, 默认值)安全访问,键不存在返回 None 或指定默认值dic.get('tel', '未知') → ' 未知'
dic = {'name': 'bingbing', 'age': 18}# 直接访问
print(dic['name'])  # bingbing
# print(dic['sex'])  # 报错:KeyError(键不存在)# get() 方法访问
print(dic.get('age'))        # 18
print(dic.get('tel'))        # None(默认返回)
print(dic.get('tel', '无'))  # 无(指定默认值)

3. 删除元素

字典提供多种删除操作,适用于不同场景:

方法说明示例
del 字典名[键名]删除指定键值对,键不存在则报错del dic['age']
del 字典名删除整个字典,后续无法访问del dic
字典名.clear()清空字典内容,保留空字典对象dic.clear() → {}
字典名.pop(键名)删除指定键值对并返回对应值,键不存在则报错dic.pop('name') → 'bingbing'
字典名.popitem()Python 3.7+ 中删除最后一个键值对并返回该键值对(元组形式)dic.popitem() → ('tel', '12345678')
dic = {'name': 'bingbing', 'age': 18, 'tel': '12345678'}# pop() 删除并返回值
age = dic.pop('age')
print(age)   # 18
print(dic)   # {'name': 'bingbing', 'tel': '12345678'}# popitem() 删除最后一个键值对
last_item = dic.popitem()
print(last_item)  # ('tel', '12345678')
print(dic)        # {'name': 'bingbing'}# clear() 清空字典
dic.clear()
print(dic)  # {}

4. 其他常用操作

  • 获取长度len(字典名) 返回键值对的数量
  • 获取所有键keys() 返回键的集合(可迭代)
  • 获取所有值values() 返回值的集合(可迭代)
  • 获取所有键值对items() 返回键值对元组的集合(可迭代)
dic = {'name': 'bingbing', 'age': 18, 'tel': '123'}# 长度
print(len(dic))  # 3# 所有键
print(dic.keys())  # dict_keys(['name', 'age', 'tel'])# 所有值
for value in dic.values():print(value)  # 依次输出:bingbing、18、123# 所有键值对(常用于遍历)
for key, value in dic.items():print(f"{key}: {value}")
# 输出:
# name: bingbing
# age: 18
# tel: 123

三、字典的拷贝:浅拷贝与深拷贝

字典的拷贝涉及到可变对象和不可变对象的处理差异,需注意深浅拷贝的区别:

1. 浅拷贝(copy() 方法)

  • 不可变对象(如字符串、数字):拷贝值的副本,修改互不影响
  • 可变对象(如列表、字典):仅拷贝引用(共享内存地址),修改会相互影响
original = {'name': 'Alice',  # 不可变对象(字符串)'scores': [85, 90],  # 可变对象(列表)'details': {'city': 'New York'}  # 可变对象(字典)
}# 浅拷贝
shallow_copy = original.copy()# 修改不可变对象(互不影响)
shallow_copy['name'] = 'zhangsan'
print(original['name'])  # Alice(原字典不变)
print(shallow_copy['name'])  # zhangsan(拷贝字典变化)# 修改可变对象(相互影响)
shallow_copy['scores'].append(95)
print(original['scores'])  # [85, 90, 95](原字典被影响)
print(shallow_copy['scores'])  # [85, 90, 95](拷贝字典变化)shallow_copy['details']['city'] = 'Shanghai'
print(original['details'])  # {'city': 'Shanghai'}(原字典被影响)

2. 深拷贝(copy.deepcopy()

通过 copy 模块的 deepcopy() 实现,完全拷贝所有层级的对象(包括可变对象),原字典与拷贝字典完全独立,修改互不影响。

import copyoriginal = {'scores': [85, 90],'details': {'city': 'New York'}
}# 深拷贝
deep_copy = copy.deepcopy(original)# 修改可变对象(互不影响)
deep_copy['scores'].append(95)
deep_copy['details']['city'] = 'Shanghai'print(original['scores'])  # [85, 90](原字典不变)
print(deep_copy['scores'])  # [85, 90, 95](拷贝字典变化)print(original['details'])  # {'city': 'New York'}(原字典不变)
print(deep_copy['details'])  # {'city': 'Shanghai'}(拷贝字典变化)

 

四、字典的应用场景

字典凭借键值对的特性,在以下场景中应用广泛:

1. 存储结构化数据

适合表示具有多个属性的实体(如用户信息、商品详情等)。

user = {'id': 1001,'name': 'bingbing','info': {'age': 18, 'gender': 'female'}
}

2. 高效查找与映射

用于需要通过唯一标识快速定位数据的场景(如缓存、索引)。

# 用字典实现快速查询学生成绩
score_map = {'Alice': 90, 'Bob': 85, 'Cindy': 95}
print(score_map.get('Bob'))  # 85(O(1) 时间复杂度)

3. 配置参数存储

适合存储程序的配置信息(如数据库连接参数)。

db_config = {'host': 'localhost','port': 3306,'user': 'root','password': '123456'
}

4. 计数与统计

通过键记录对象,值记录数量,实现高效计数。

# 统计字符串中字符出现次数
s = 'abracadabra'
count = {}
for char in s:count[char] = count.get(char, 0) + 1
print(count)  # {'a': 5, 'b': 2, 'r': 2, 'c': 1, 'd': 1}

五、补充:字典推导式

与列表推导式类似,字典推导式可快速创建字典,格式为:
{键表达式: 值表达式 for 变量 in 可迭代对象 if 条件}

# 示例1:创建值为键的平方的字典
square = {i: i**2 for i in range(1, 6)}
print(square)  # {1: 1, 2: 4, 3: 9, 4: 16, 5: 25}# 示例2:筛选值为偶数的键值对
original = {'a': 2, 'b': 3, 'c': 4, 'd': 5}
even_dict = {k: v for k, v in original.items() if v % 2 == 0}
print(even_dict)  # {'a': 2, 'c': 4}

总结

字典作为 Python 中最灵活的数据结构之一,其键值对存储方式和高效查找特性使其在各类场景中不可或缺。本文核心要点:

  • 字典以键值对存储,键唯一且不可变,值可任意类型
  • 支持增删改查操作,get() 方法可安全访问键值
  • 浅拷贝对可变对象共享引用,深拷贝完全独立
  • 适合存储结构化数据、高效查找、配置参数等场景
http://www.dtcms.com/wzjs/493331.html

相关文章:

  • 重庆丰标建设网站新闻发稿平台有哪些?
  • 广州网站搭建费用网络营销有哪些例子
  • 网站建设的具体任务有哪些网站优化seo教程
  • 中企动力 网站推广如何做好一个营销方案
  • 杭州网站优化排名长沙网站优化对策
  • pc网站建设绍兴seo公司
  • wordpress小工具复制推动防控措施持续优化
  • 适合做公司网站的cms哪里注册域名最便宜
  • wordpress 搬站写文章一篇30元兼职
  • 网站开发学什么比较有优势爱站seo工具包官网
  • 网站开发小图标东莞网站建设优化
  • 合肥做网站建设公司河北网站seo地址
  • 网站建设与推广销售户话术学校网站模板
  • 政府网站建设 便捷关键词点击价格查询
  • 网站建设计划方案模板优化关键词的公司
  • 邢台哪个公司做网站好天津外贸seo推广
  • 建网站对企业的作用做广告推广哪个平台好
  • 八年级信息上册如何做网站com天堂网
  • 山东省工程建设信息官方网站网络营销推广平台
  • 360建站网站模板下载
  • 重庆模板网站建设怎么样网站死链检测工具
  • 教育网站建设方案电商sem是什么意思
  • logo网站找人帮忙注册app推广
  • 在线股票交易网站开发武汉网站推广公司
  • 国外图片设计网站有哪些网络推广公司名字大全
  • 医药招商网站建设免费舆情网站下载大全最新版
  • 网站备案多少钱seo品牌推广方法
  • 艾辰做网站做优化关键词
  • 企业做网站需注意什么seo优化博客
  • 用什么软件做网站图片百度学术论文查重官网