python---字典(dict)

python---字典(dict)

文章目录

字典(dict)是 Python 中最重要、最常用的内置数据结构之一,用于存储 键值对(key-value pairs) 数据。

1. 字典的基本特性

1、无序集合(Python 3.7+ 后按插入顺序保存)

2、可变(可动态增删改)

3、键必须唯一且不可变(如字符串、数字、元组)

4、值可以是任意类型(包括其他字典)

2. 创建字典

# 方式1:花括号 d1 ={'name':'Alice', 'age':25}# 方式2:dict()构造函数 d2 = dict(name='Bob', age=30)# 方式3:键值对列表 d3 = dict([('name', 'Charlie'), ('age', 35)])# 空字典 empty_dict ={}

3. 字典操作

访问元素

person ={'name':'Alice', 'age':25}# 获取值 print(person['name'])# 'Alice'# 使用get()方法(避免KeyError) print(person.get('age'))# 25 print(person.get('height'))# None print(person.get('height', 170))# 默认值170

添加/修改元素

person['age']=26# 修改# city是原本没有的键 person['city']='NY'# 新增

删除元素

del person['city']# 删除键值对 age = person.pop('age')# 删除并返回值 person.clear()# 清空字典

4. 常用方法

方法描述
keys()返回所有键
values()返回所有值
items()返回所有键值对
update()合并字典
setdefault()安全获取/设置值
popitem()移除最后插入的项
len()返回字典中 键值对(key-value pairs)的数量
person ={'name':'Alice', 'age':25}# 遍历forkeyin person: ... forvaluein person.values(): ... for key, value in person.items(): ... # 合并字典 extra_info ={'city':'NY', 'job':'Engineer'} person.update(extra_info) my_dict ={'a':1, 'b':2, 'c':3}# 计算字典的长度(键值对数量) print(len(my_dict))# 输出: 3# 空字典的情况 empty_dict ={} print(len(empty_dict))# 输出: 0

items详细介绍

在 Python 中,字典(dict)的 items() 方法返回一个 视图对象(dict_items 类型),它包含字典中所有的键值对((key, value) 元组)。这个视图是动态的,会反映字典的实时变化。

tuple1 = person.items() print(tuple1)# items返回值是实时变化的 person['city']='NY' print(tuple1)

输出结果:

dict_items([('name', 'Alice'), ('age', 25)]) dict_items([('name', 'Alice'), ('age', 25), ('city', 'NY')])

pop和popitem的区别

这两个方法都用于从字典中移除并返回元素,但有重要区别:

pop(key[, default])

1、移除指定键的元素并返回其值

2、必须指定要移除的键,如果键不存在:

2.1、不提供默认值:引发 KeyError

2.2、提供默认值:返回默认值而不报错

popitem()

1、移除并返回最后插入的键值对 (Python 3.7+),在 Python 3.6 及之前版本,popitem() 移除的是随机项,不是最后插入的

2、不需要参数

3、字典为空时引发 KeyError

4、返回形式为 (key, value) 元组

主要区别总结

特性pop()popitem()
参数需求必须指定key不需要参数
返回值只返回值返回(key, value)元组
空字典行为键不存在时可能报错必定报错
移除位置指定键最后插入的项(LIFO)
Python版本影响所有版本行为一致3.7+才保证LIFO顺序
典型用途移除特定元素实现栈/缓存淘汰

setdefault方法

setdefault用于获取字典中指定键的值,如果键不存在,则会设置默认值并返回该默认值。

setdefalut与get的区别

get()方法在键不存在时返回默认值但不会修改字典

setdefault()方法在键不存在时会修改字典,添加键值对

5. 字典推导式

类似列表推导式:

squares ={x: x*x forxin range(5)}# {0: 0, 1: 1, 2: 4, 3: 9, 4: 16}

6. 查找键值是否存在

1. 使用 in 关键字(推荐)

my_dict ={'name':'Alice', 'age':25}if'name'in my_dict: print("键 'name' 存在")# 会执行if'gender' not in my_dict: print("键 'gender' 不存在")# 会执行

2. 使用 get() 方法

my_dict ={'name':'Alice', 'age':25}# 如果键存在,返回对应的值;不存在则返回None(或指定的默认值) value = my_dict.get('name')if value is not None: print(f"键 'name' 存在,值为 {value}")

3. 使用 keys() 方法

my_dict ={'name':'Alice', 'age':25}if'age'in my_dict.keys(): print("键 'age' 存在")

4. 使用 try-except 块

my_dict ={'name':'Alice', 'age':25} try: value = my_dict['gender'] except KeyError: print("键 'gender' 不存在")

性能比较

1、in 操作符是最快和最Pythonic的方式

2、get() 方法在需要同时获取值时很方便

3、keys() 方法在Python 3中与直接使用in性能相同(因为keys()返回的是视图对象)

4、try-except 适用于预期键通常存在的情况

7. 特殊字典类型

collections模块中的特殊类型,有兴趣可以自己去搜索,博主在这里就不带着大家一块学习了。
collections.defaultdict:带默认值的字典

collections.OrderedDict:保持插入顺序的字典

collections.Counter:计数器专用字典

8. 注意事项

1、检查键是否存在:if key in dict 比 try-except 更高效

2、字典键必须是可哈希的(不可变类型)

3、Python 3.7+ 中字典保持插入顺序

4、不允许用下表查找

9. 应用场景

如JSON数据处理、配置存储。

Read more

安装 启动 使用 Neo4j的超详细教程

安装 启动 使用 Neo4j的超详细教程

最近在做一个基于知识图谱的智能生成项目。需要用到Neo4j图数据库。写这篇文章记录一下Neo4j的安装及其使用。 一.Neo4j的安装 1.首先安装JDK,配环境变量。(参照网上教程,很多) Neo4j是基于Java的图形数据库,运行Neo4j需要启动JVM进程,因此必须安装JAVA SE的JDK。从Oracle官方网站下载 Java SE JDK。我使用的版本是JDK1.8 2.官网上安装neo4j。 官方网址:https://neo4j.com/deployment-center/  在官网上下载对应版本。Neo4j应用程序有如下主要的目录结构: bin目录:用于存储Neo4j的可执行程序; conf目录:用于控制Neo4j启动的配置文件; data目录:用于存储核心数据库文件; plugins目录:用于存储Neo4j的插件; 3.配置环境变量 创建主目录环境变量NEO4J_HOME,并把主目录设置为变量值。复制具体的neo4j文件地址作为变量值。 配置文档存储在conf目录下,Neo4j通过配置文件neo4j.conf控制服务器的工作。默认情况下,不需

企业微信群机器人Webhook配置全攻略:从创建到发送消息的完整流程

企业微信群机器人Webhook配置全攻略:从创建到发送消息的完整流程 在数字化办公日益普及的今天,企业微信作为国内领先的企业级通讯工具,其群机器人功能为团队协作带来了极大的便利。本文将手把手教你如何从零开始配置企业微信群机器人Webhook,实现自动化消息推送,提升团队沟通效率。 1. 准备工作与环境配置 在开始创建机器人之前,需要确保满足以下基本条件: * 企业微信账号:拥有有效的企业微信管理员或成员账号 * 群聊条件:至少包含3名成员的群聊(这是创建机器人的最低人数要求) * 网络环境:能够正常访问企业微信服务器 提示:如果是企业管理员,建议先在"企业微信管理后台"确认机器人功能是否已对企业开放。某些企业可能出于安全考虑会限制此功能。 2. 创建群机器人 2.1 添加机器人到群聊 1. 打开企业微信客户端,进入目标群聊 2. 点击右上角的群菜单按钮(通常显示为"..."或"⋮") 3. 选择"添加群机器人"选项 4.

Flowise物联网融合:与智能家居设备联动的应用设想

Flowise物联网融合:与智能家居设备联动的应用设想 1. Flowise:让AI工作流变得像搭积木一样简单 Flowise 是一个真正把“AI平民化”落地的工具。它不像传统开发那样需要写几十行 LangChain 代码、配置向量库、调试提示词模板,而是把所有这些能力打包成一个个可拖拽的节点——就像小时候玩乐高,你不需要懂塑料怎么合成,只要知道哪块该拼在哪,就能搭出一座城堡。 它诞生于2023年,短短一年就收获了45.6k GitHub Stars,MIT协议开源,意味着你可以放心把它用在公司内部系统里,甚至嵌入到客户交付的产品中,完全不用担心授权问题。最打动人的不是它的技术多炫酷,而是它真的“不挑人”:产品经理能搭出知识库问答机器人,运营同学能配出自动抓取竞品文案的Agent,连刚学Python两周的实习生,也能在5分钟内跑通一个本地大模型的RAG流程。 它的核心逻辑很朴素:把LangChain里那些抽象概念——比如LLM调用、文档切分、向量检索、工具调用——变成画布上看得见、摸得着的方块。你拖一个“Ollama LLM”节点,再拖一个“Chroma Vector

OpenClaw配置Bot接入飞书机器人+Kimi2.5

OpenClaw配置Bot接入飞书机器人+Kimi2.5

上一篇文章写了Ubuntu_24.04下安装OpenClaw的过程,这篇文档记录一下接入飞书机器+Kimi2.5。 准备工作 飞书 创建飞书机器人 访问飞书开放平台:https://open.feishu.cn/app,点击创建应用: 填写应用名称和描述后就直接创建: 复制App ID 和 App Secret 创建成功后,在“凭证与基础信息”中找到 App ID 和 App Secret,把这2个信息复制记录下来,后面需要配置到openclaw中 配置权限 点击【权限管理】→【开通权限】 或使用【批量导入/导出权限】,选择导入,输入以下内容,如下图 点击【下一步,确认新增权限】即可开通所需要的权限。 配置事件与回调 说明:这一步的配置需要先讲AppId和AppSecret配置到openclaw成功之后再设置订阅方式,