超详解——Python 字典详解——小白篇

目录

1. 创建字典

示例:

2. 访问字典中的元素

示例:

3. 修改字典元素

示例:

4. 删除字典元素

示例:

5. 查找元素是否是字典的键

示例:

6. 标准类型操作符

获取字典长度

合并两个字典

7. 常用内置函数

keys() 方法

values() 方法

items() 方法

字典的遍历


字典(Dictionary)是Python中非常重要和实用的数据结构,用于存储键值对(key-value pairs)。字典在很多编程场景中非常有用,因为它们提供了一种高效的方式来管理和访问数据。本文将详细讲解如何创建字典、访问字典中的元素、修改字典元素、删除字典元素、查找元素是否是字典的键、标准类型操作符以及常用内置函数。

1. 创建字典

字典是由一系列键值对组成的无序集合。键是唯一的,且必须是不可变的类型(如字符串、数字或元组),值可以是任何类型。字典使用花括号 {} 创建,键和值之间用冒号 : 分隔,键值对之间用逗号 , 分隔。

示例:
# 创建一个空字典
empty_dict = {}

# 创建一个包含键值对的字典
person = {"name": "Alice", "age": 25, "city": "New York"}

# 使用 dict() 函数创建字典
person = dict(name="Alice", age=25, city="New York")

# 创建嵌套字典
nested_dict = {"name": "Alice", "details": {"age": 25, "city": "New York"}}

print(empty_dict)  # 输出:{}
print(person)      # 输出:{'name': 'Alice', 'age': 25, 'city': 'New York'}
print(nested_dict) # 输出:{'name': 'Alice', 'details': {'age': 25, 'city': 'New York'}}

2. 访问字典中的元素

字典中的元素可以通过键来访问。如果键不存在,会引发 KeyError 异常。可以使用 get() 方法在键不存在时返回默认值,而不是引发异常。

示例:
person = {"name": "Alice", "age": 25, "city": "New York"}

# 使用键访问值
print(person["name"])  # 输出:Alice
print(person["age"])   # 输出:25

# 使用 get() 方法访问值
print(person.get("city"))      # 输出:New York
print(person.get("country"))   # 输出:None
print(person.get("country", "USA"))  # 输出:USA

3. 修改字典元素

字典中的值可以通过键进行修改。如果键不存在,会添加一个新的键值对。

示例:
person = {"name": "Alice", "age": 25, "city": "New York"}

# 修改现有键的值
person["age"] = 26
print(person)  # 输出:{'name': 'Alice', 'age': 26, 'city': 'New York'}

# 添加新的键值对
person["country"] = "USA"
print(person)  # 输出:{'name': 'Alice', 'age': 26, 'city': 'New York', 'country': 'USA'}

4. 删除字典元素

可以使用 del 语句或 pop() 方法删除字典中的元素。pop() 方法还会返回被删除的值。popitem() 方法删除并返回字典中的最后一个键值对(在Python 3.7+中,字典是有序的)。

示例:
person = {"name": "Alice", "age": 25, "city": "New York", "country": "USA"}

# 使用 del 语句删除元素
del person["country"]
print(person)  # 输出:{'name': 'Alice', 'age': 25, 'city': 'New York'}

# 使用 pop() 方法删除元素
age = person.pop("age")
print(age)     # 输出:25
print(person)  # 输出:{'name': 'Alice', 'city': 'New York'}

# 使用 popitem() 方法删除并返回最后一个键值对
last_item = person.popitem()
print(last_item)  # 输出:('city', 'New York')
print(person)     # 输出:{'name': 'Alice'}

使用 del 语句删除字典元素

del 语句用于从字典中删除指定的键及其对应的值。使用此方法时,如果尝试删除的键不存在,会引发 KeyError 异常。

person = {
    "name": "Alice",
    "age": 25,
    "city": "New York",
    "country": "USA"
}

# 使用 del 语句删除键 "country"
del person["country"]
print(person)  # 输出:{'name': 'Alice', 'age': 25, 'city': 'New York'}

 使用 pop() 方法删除字典元素

pop() 方法用于删除指定的键,并返回该键对应的值。如果指定的键不存在,同样会引发 KeyError 异常。可以提供一个默认值参数,当键不存在时返回该默认值而不引发异常。

person = {
    "name": "Alice",
    "age": 25,
    "city": "New York"
}

# 使用 pop() 方法删除键 "age" 并返回其值
age = person.pop("age")
print(age)     # 输出:25
print(person)  # 输出:{'name': 'Alice', 'city': 'New York'}

# 使用 pop() 方法删除键 "country" 并提供默认值
country = person.pop("country", "Not Found")
print(country)  # 输出:Not Found
print(person)   # 输出:{'name': 'Alice', 'city': 'New York'}

使用 popitem() 方法删除并返回最后一个键值对

popitem() 方法删除并返回字典中的最后一个键值对。在 Python 3.7 及之后的版本中,字典是有序的,因此 popitem() 会删除字典中的最后一个元素。如果字典为空,调用 popitem() 会引发 KeyError 异常。

person = {
    "name": "Alice",
    "city": "New York"
}

# 使用 popitem() 方法删除并返回最后一个键值对
last_item = person.popitem()
print(last_item)  # 输出:('city', 'New York')
print(person)     # 输出:{'name': 'Alice'}

 

5. 查找元素是否是字典的键

可以使用 in 操作符检查一个键是否存在于字典中。

示例:
person = {"name": "Alice", "age": 25, "city": "New York"}

# 检查键是否存在
print("name" in person)  # 输出:True
print("country" in person)  # 输出:False

# 检查键是否不存在
print("name" not in person)  # 输出:False
print("country" not in person)  # 输出:True

检查键是否存在

使用 in 操作符可以直接检查键是否在字典中。

# 检查键 "name" 是否存在于字典 person 中
print("name" in person)  # 输出:True

# 检查键 "country" 是否存在于字典 person 中
print("country" in person)  # 输出:False
  • "name" in person 返回 True,因为字典 person 中确实存在键 "name"
  • "country" in person 返回 False,因为字典 person 中不存在键 "country"

检查键是否不存在

同样地,我们可以使用 not in 操作符来检查键是否不在字典中。

# 检查键 "name" 是否不存在于字典 person 中
print("name" not in person)  # 输出:False

# 检查键 "country" 是否不存在于字典 person 中
print("country" not in person)  # 输出:True
  • "name" not in person 返回 False,因为字典 person 中存在键 "name"
  • "country" not in person 返回 True,因为字典 person 中确实不存在键 "country"

 6. 标准类型操作符

字典支持一些常用的标准类型操作符,例如键值对的长度、合并两个字典等。

获取字典长度

使用 len() 函数可以获取字典中键值对的数量。

示例:

person = {"name": "Alice", "age": 25, "city": "New York"}
print(len(person))  # 输出:3

合并两个字典

在Python 3.9+中,可以使用 | 操作符合并两个字典。

示例:

dict1 = {"name": "Alice"}
dict2 = {"age": 25, "city": "New York"}
merged_dict = dict1 | dict2
print(merged_dict)  # 输出:{'name': 'Alice', 'age': 25, 'city': 'New York'}

在早期版本中,可以使用 update() 方法合并字典。

示例:

dict1 = {"name": "Alice"}
dict2 = {"age": 25, "city": "New York"}
dict1.update(dict2)
print(dict1)  # 输出:{'name': 'Alice', 'age': 25, 'city': 'New York'}

7. 常用内置函数

Python提供了一些内置函数,用于操作和处理字典。

keys() 方法

keys() 方法返回字典中所有的键。

示例:

person = {"name": "Alice", "age": 25, "city": "New York"}
print(person.keys())  # 输出:dict_keys(['name', 'age', 'city'])

values() 方法

values() 方法返回字典中所有的值。

示例:

person = {"name": "Alice", "age": 25, "city": "New York"}
print(person.values())  # 输出:dict_values(['Alice', 25, 'New York'])

items() 方法

items() 方法返回字典中所有的键值对。

示例:

person = {"name": "Alice", "age": 25, "city": "New York"}
print(person.items())  # 输出:dict_items([('name', 'Alice'), ('age', 25), ('city', 'New York')])

字典的遍历

可以使用 for 循环遍历字典的键、值或键值对。

示例:

person = {"name": "Alice", "age": 25, "city": "New York"}

# 遍历键
for key in person.keys():
    print(key)

# 遍历值
for value in person.values():
    print(value)

# 遍历键值对
for key, value in person.items():
    print(f"{key}: {value}")

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/712577.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

el-table表头修改文字或者背景颜色,通过header-row-style设置样式

方式一 <el-table :header-cell-style"{text-align: center}" />方式二 <template><el-table :header-cell-style"tableHeaderColor" /> </template> <script> export default {methods: {tableHeaderColor ({row, column…

socket收发数据的处理

1. TCP 协议是一种基于数据流的协议 Socket的Receive方法只是把接收缓冲区的数据提取出来,当系统的接收缓冲区为空,Receive方法会被阻塞,直到里面有数据。 Socket的Send方法只是把数据写入到发送缓冲区里,具体的发送过程由操作系统负责。当操作系统的发送缓冲区满了,Send方法会…

基于springboot的大学计算机基础网络教学系统

文章目录 项目介绍主要功能截图:部分代码展示设计总结项目获取方式🍅 作者主页:超级无敌暴龙战士塔塔开 🍅 简介:Java领域优质创作者🏆、 简历模板、学习资料、面试题库【关注我,都给你】 🍅文末获取源码联系🍅 项目介绍 基于springboot的大学计算机基础网络教学…

【Pycharm】设置双击打开文件

概要 习惯真可怕。很多小伙伴用习惯了VsCode开发&#xff0c;或者其他一些开发工具&#xff0c;然后某些开发工具是单击目录文件就能打开预览的&#xff0c;而换到pycharm后&#xff0c;发现目录是双击才能打开预览&#xff0c;那么这个用起来就特别不习惯。 解决办法 只需一…

代码随想录-Day31

455. 分发饼干 假设你是一位很棒的家长&#xff0c;想要给你的孩子们一些小饼干。但是&#xff0c;每个孩子最多只能给一块饼干。 对每个孩子 i&#xff0c;都有一个胃口值 g[i]&#xff0c;这是能让孩子们满足胃口的饼干的最小尺寸&#xff1b;并且每块饼干 j&#xff0c;都…

swiftui中使用icon图标时,让中间部分不透明显示

在使用了Image(systemName: "plus.circle.fill")这个视图组件后&#xff0c;发现中间的加号竟然是透明的&#xff0c;但是我们想要的是不让它透明&#xff0c;该怎么做呢&#xff1f; 最简单的方式就是给这个图片设置一个白色的背景是不是就好了&#xff1f;我们可以…

Apple - Cocoa Text Architecture Guide

翻译整理自&#xff1a;Cocoa Text Architecture Guide https://developer.apple.com/library/archive/documentation/TextFonts/Conceptual/CocoaTextArchitecture/Introduction/Introduction.html#//apple_ref/doc/uid/TP40009459 文章目录 一、关于 Cocoa 文本系统1、概览大…

web端即时通信技术

web端即时通信技术 对于IM/消息推送这类即时通讯系统而言&#xff0c;系统的关键就是“实时通信”能力。所谓实时通信有以下两层含义 客户端可以主动向服务端发送信息。 当服务端内容发生变化时&#xff0c;服务端可以实时通知客户端。 HTTP局限 Http是客户端/服务器模式中…

AI实践与学习6-RAG流程优化学习

背景 RAG流程很多细节优化点&#xff0c;助力AIGC。 内容 LangChain在RAG功能上的一些能力 多路向量检索 多向量检索器的核心想法是将我们想要用于答案合成的文档与我们想要用于检索的参考文献分开。这允许系统为搜索优化文档的版本&#xff08;例如&#xff0c;摘要&…

LeetCode | 709.转换成小写字母

这道题可以用api也可以自己实现&#xff0c;都不难&#xff0c;大小字母之前相差了32&#xff0c;检查到大写字母时加上32即可 class Solution(object):def toLowerCase(self, s):""":type s: str:rtype: str"""return s.lower()class Solution…

笨蛋学算法之LeetCodeHot100_5_三数之和(Java)

package com.lsy.leetcodehot100;import java.util.ArrayList; import java.util.Arrays; import java.util.List;public class _Hot6_三数之和 {public static List<List<Integer>> threeSum(int[] nums) {//先排序数组Arrays.sort(nums);//存放结果集List<Lis…

QShop商城-短信通知配置

QShop商城-短信通知配置 本系统短信通知配置可选阿里云/腾讯云,二者二选一即可. 阿里云短信 一、登录阿里云短信平台 阿里云短信平台管理地址&#xff1a;https://dysms.console.aliyun.com/dysms.html 二、账户ID和秘钥&#xff08;AccessKeyId 和 AccessKeySecret&#x…

C++初学者指南第一步---2. Hello world

C初学者指南第一步—2. Hello world 目录 C初学者指南第一步---2. Hello world1.源文件 “Hello.cpp”2.编译hello.cpp3.术语4.编译器标志5.不要使用 “using namespace std;” &#xff01; 1.源文件 “Hello.cpp” #include <iostream> // our first program int main…

检索增强生成(RAG)实践:基于LlamaIndex和Qwen1.5搭建智能问答系统

什么是 RAG LLM 会产生误导性的 “幻觉”&#xff0c;依赖的信息可能过时&#xff0c;处理特定知识时效率不高&#xff0c;缺乏专业领域的深度洞察&#xff0c;同时在推理能力上也有所欠缺。 正是在这样的背景下&#xff0c;检索增强生成技术&#xff08;Retrieval-Augmented…

无人机的发展

朋友们&#xff0c;你们知道吗&#xff1f;无人机的发展之路可谓是科技界的一股清流&#xff0c;风头正劲啊&#xff01;从最初简单的遥控飞机到现在各种智能功能的加持&#xff0c;无人机真是越来越神奇了&#xff01; 首先&#xff0c;无人机在航拍领域大放异彩&#xff01;无…

FullCalendar日历组件集成实战(14)

背景 有一些应用系统或应用功能&#xff0c;如日程管理、任务管理需要使用到日历组件。虽然Element Plus也提供了日历组件&#xff0c;但功能比较简单&#xff0c;用来做数据展现勉强可用。但如果需要进行复杂的数据展示&#xff0c;以及互动操作如通过点击添加事件&#xff0…

Linux Centos 环境下搭建RocketMq集群(双主双从)

1、下载rocketmq的包 下载 | RocketMQ 2、配置环境变量 1、编辑环境变量文件&#xff1a;vim /etc/profile2、加入如下配置&#xff1a; #rocketmq 4.9.8 ROCKETMQ_HOME/home/rocketmq/rocketmq-4.9.8 export PATH${ROCKETMQ_HOME}/bin:${PATH}3、刷新配置&#xff1a;source…

OpenWrt配置单臂路由模式

正文共&#xff1a;888 字 24 图&#xff0c;预估阅读时间&#xff1a;1 分钟 前面&#xff0c;我们成功将OpenWrt部署到了x86的ESXi服务器中&#xff08;将OpenWrt部署在x86服务器上&#xff09;&#xff0c;但是我们没有设置root密码&#xff0c;非常不安全。赶紧在“system”…

蚓链数字化营销教你寻找快准直达市场路径小绝招

在当今数字化的商业世界中&#xff0c;蚓链数字化营销成为了企业开拓市场、实现增长的有力工具。它犹如一盏明灯&#xff0c;为您照亮寻找快速直达市场路径的方向。 绝招一&#xff1a;深入的市场调研。利用蚓链数字化营销的大数据分析能力&#xff0c;全面了解目标市场的规模、…

django.db.utils.NotSupportedError: MySQL 8 or later is required (found 5.7.33).

django.db.utils.NotSupportedError: MySQL 8 or later is required (found 5.7.33). 一、原因分析 在新版的Django默认需要MySQL 8或更高版本&#xff0c;才能运行。 二、解决办法 1、升级mysql数据库版本 只需要将mysql版本升级到8.0&#xff0c;即可解决&#xff0c;当然这…