编程新手必看,学习python中字典数据类型内容(11)

news2024/11/23 20:39:24

介绍:
Python3中的字典是一个非常重要的内置数据结构,它以键值对的形式存储数据,允许通过键来快速访问相应的值。
字典的特点和操作如下:
创建字典:可以通过一对大括号{}来创建一个空字典,或者在大括号内部放入键值对来创建一个非空字典。每个键值对由一个键和一个值组成,中间用冒号分隔,不同的键值对之间用逗号分隔。
访问字典元素:可以通过键来访问字典中的值,如果键不存在于字典中,会抛出KeyError异常。
更新字典:可以通过指定键来更新字典中的值,如果键不存在则会添加一个新的键值对。
删除字典元素:可以使用del语句来删除字典中的一个键值对,或者使用pop()方法来删除并返回指定键对应的值。
字典方法:字典有多种内置方法,如keys()返回所有键的列表,values()返回所有值的列表,items()返回所有键值对的列表等。
字典运算:字典支持与其它集合类型的交集、并集等运算。
字典推导式:可以使用字典推导式来从一个迭代器快速生成字典。
默认字典:如果想要为字典提供一个默认值,可以使用collections模块中的defaultdict类。
总的来说,Python3中的字典是一个功能强大且灵活的数据结构,它不仅可以存储任意类型的对象,还提供了快速访问和修改数据的能力,是处理复杂数据和解决实际问题的重要工具。

1、Python3 字典

字典是另一种可变容器模型,且可存储任意类型对象。
字典的每个键值 key=>value 对用冒号 : 分割,每个对之间用逗号(,)分割,整个字典包括在花括号 {} 中 ,格式如下所示:

d = {key1 : value1, key2 : value2, key3 : value3 }

注意:dict 作为 Python 的关键字和内置函数,变量名不建议命名为 dict。
在这里插入图片描述
键必须是唯一的,但值则不必。
值可以取任何数据类型,但键必须是不可变的,如字符串,数字。
一个简单的字典实例:

tinydict = {'name': 'runoob', 'likes': 123, 'url': 'www.runoob.com'}

在这里插入图片描述
也可如此创建字典:

tinydict1 = { 'abc': 456 }
tinydict2 = { 'abc': 123, 98.6: 37 }

2、创建空字典

使用大括号 { } 创建空字典:

# 使用大括号 {} 来创建空字典
emptyDict = {}
# 打印字典
print(emptyDict)
# 查看字典的数量
print("Length:", len(emptyDict))
# 查看类型
print(type(emptyDict))

运行结果

{}
Length: 0
<class 'dict'>

使用内建函数 dict() 创建字典:

emptyDict = dict()
# 打印字典
print(emptyDict)
# 查看字典的数量
print("Length:",len(emptyDict))
# 查看类型
print(type(emptyDict))

输出结果:

{}
Length: 0
<class 'dict'>

3、访问字典里的值

把相应的键放入到方括号中,如下实例:

tinydict = {'Name': 'xiaoming', 'Age': 17, 'Class': 'First'}
print("tinydict['Name']: ", tinydict['Name'])
print("tinydict['Age']: ", tinydict['Age'])

运行结果

tinydict['Name']:  xiaoming
tinydict['Age']:  17

如果用字典里没有的键访问数据,会输出错误如下:

tinydict = {'Name': 'xioaming', 'Age': 17, 'Class': 'First'}
print("tinydict['Alice']: ", tinydict['Alice'])

运行结果

Traceback (most recent call last):
  File "D:\Python3.12\pythondeme\Hello\dict.py", line 20, in <module>
    print("tinydict['Alice']: ", tinydict['Alice'])
                                 ~~~~~~~~^^^^^^^^^
KeyError: 'Alice'

4、修改字典

向字典添加新内容的方法是增加新的键/值对,修改或删除已有键/值对如下实例:

tinydict = {'Name': 'xiaoming', 'Age': 17, 'Class': 'First'}
tinydict['Age'] = 18  # 更新 Age
tinydict['School'] = "开放大学"  # 添加信息
print("tinydict['Age']: ", tinydict['Age'])
print("tinydict['School']: ", tinydict['School'])

输出结果:

tinydict['Age']:  18
tinydict['School']:  开放大学

5、删除字典元素

能删单一的元素也能清空字典,清空只需一项操作。
显式删除一个字典用del命令,如下实例:

tinydict = {'Name': '小明', 'Age': 17, 'Class': 'First'}
del tinydict['Name']  # 删除键 'Name'
tinydict.clear()  # 清空字典
del tinydict  # 删除字典
print("tinydict['Age']: ", tinydict['Age'])
print("tinydict['School']: ", tinydict['School'])

运行结果

Traceback (most recent call last):
  File "D:\Python3.12\pythondeme\Hello\dict.py", line 35, in <module>
    print("tinydict['Age']: ", tinydict['Age'])
                               ^^^^^^^^
NameError: name 'tinydict' is not defined

但这会引发一个异常,因为用执行 del 操作后字典不再存在:

Traceback (most recent call last):
  File "/runoob-test/test.py", line 9, in <module>
    print ("tinydict['Age']: ", tinydict['Age'])
NameError: name 'tinydict' is not defined

注:del() 方法后面也会讨论。
字典键的特性
字典值可以是任何的 python 对象,既可以是标准的对象,也可以是用户定义的,但键不行。
两个重要的点需要记住:
1)不允许同一个键出现两次。创建时如果同一个键被赋值两次,后一个值会被记住,如下实例:

tinydict = {'Name': '小明', 'Age': 17, 'Name': '希望'}
print("tinydict['Name']: ", tinydict['Name'])

结果

tinydict['Name']:  希望

2)键必须不可变,所以可以用数字,字符串或元组充当,而用列表就不行,如下实例:

tinydict = {['Name']: '小明', 'Age': 17}
print("tinydict['Name']: ", tinydict['Name'])

运行结果

Traceback (most recent call last):
  File "D:\Python3.12\pythondeme\Hello\dict.py", line 42, in <module>
    tinydict = {['Name']: '小明', 'Age': 17}
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: unhashable type: 'list'

6、字典内置函数&方法

Python字典包含了以下内置函数:
在这里插入图片描述
Python字典包含了以下内置方法:
在这里插入图片描述
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

计算机考研择校|408还是自命题,哪个上岸难度大?

我一般是建议选择408&#xff0c;但是现在考408的同学太多了 所以408的竞争压力会比较大&#xff0c;加上复习难度大&#xff0c;复习过程中&#xff0c;心态很容易崩掉。 其实到底选自命题还是408&#xff0c;我觉得还是要看自己的目标。如果目标院校是自命题&#xff0c;那…

linux自动下载rpm的依赖包的方法

背景 rpm安装包是存在依赖关系的。通常在离线安装的时候&#xff0c;没有下全依赖包&#xff0c;安装就会失败。 分析 1.首先我们要使用yumdownloader来下载指定的包。 yumdownloader --disablerepo* --enablerepobase,epel,extras --releasever7 --archx86_64 --downloadd…

人工智能——机器学习概述

1. 人工智能 1.1. 概念 人工智能(Artificial Intelligence&#xff0c;AI)&#xff0c;是新一轮科技革命和产业变革的重要驱动力量&#xff0c; [26]是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门新的技术科学。 人工智能是智能学科重要的组…

搭建前后端的链接(java)

搭建前后端的链接(java) 一.前提 1.1 javaEE 搭建前后端的链接首先需要用到javaEE&#xff0c;也就是java企业版&#xff0c;也就是java后端(后端javaSE) 利用javaEE和前端交互&#xff0c;javaSE和数据库交互&#xff0c;javaSE和javaEE之间再进行交互就实现了前后端的交互…

open graph简述

场景 在我们使用twitter的时候&#xff0c;会发现有的链接会显示预览卡片&#xff0c;有的不会。 这是因为有的网站设置了open graph&#xff0c;有的没有。 那么什么是open graph&#xff1f; open graph是一个由facebook在2010年发布的协议&#xff0c;用于在社交网络上分享…

每日OJ题_两个数组dp⑤_力扣10. 正则表达式匹配

目录 力扣10. 正则表达式匹配 解析代码 力扣10. 正则表达式匹配 10. 正则表达式匹配 难度 困难 给你一个字符串 s 和一个字符规律 p&#xff0c;请你来实现一个支持 . 和 * 的正则表达式匹配。 . 匹配任意单个字符* 匹配零个或多个前面的那一个元素 所谓匹配&#xff0c…

A Learning-Based Approach for IP Geolocation

下载地址:Towards IP geolocation using delay and topology measurements | Proceedings of the 6th ACM SIGCOMM conference on Internet measurement 被引次数:185 Abstract 定位IP主机地理位置的能力对于在线广告和网络攻击诊断等应用程序是非常吸引力的。虽然先前的方…

如何基于开源大模型搭建自己的智能体?魔搭社区推出AI Agent开发框架

阿里云牵头建设的AI模型社区魔搭(ModelScope)又上新了&#xff0c;推出适配开源大语言模型的AI Agent开发框架ModelScope-Agent。借助ModelScope-Agent&#xff0c;所有开发者都可基于开源 LLM 搭建属于自己的智能体应用&#xff0c;最大限度释放想象力和创造力。ModelScope-Ag…

苍穹外卖亮点再梳理 ||

一、项目整体亮点&#xff1a; 【注&#xff1a;基于每个亮点&#xff0c;均有整理的相关知识&#xff0c;可在博客中查看】 1.数据库的设计采用RBAC&#xff08;基于角色访问控制&#xff09;的权限设计。 RBAC将权限授予角色&#xff0c;然后将用户分配给角色&#xff0c;…

对ps的曲线的认识

首先利用取色器看看新建文档的填充颜色是什么。 为了了解曲线的图形是横坐标和纵坐标代表什么&#xff0c;我把曲线从yx&#xff0c;变成了y1-x。 这里的通道是RGB&#xff0c;观察颜色的数值变化&#xff0c;发现&#xff0c;正好是原来颜色的补色。即是1-R, 1-G, 1-B。 所以…

【spring】@Scope注解学习

Scope介绍 Scope注解是Spring框架中用于指定bean作用域的注解。在Spring中&#xff0c;一个bean的作用域定义了该bean的生命周期和创建bean实例的上下文。Spring提供了几种预定义的作用域&#xff0c;同时也支持自定义作用域。通过使用Scope注解&#xff0c;开发者可以更精确地…

Node2Vec论文翻译

node2vec: Scalable Feature Learning for Networks node2vec&#xff1a;可扩展的网络特征学习 ABSTRACT 网络中节点和边缘的预测任务需要在学习算法使用的工程特征上付出仔细的努力。最近在更广泛的表示学习领域的研究通过学习特征本身在自动化预测方面取得了重大进展。然…

win:Ollama安装和大模型的集成

一、Ollama介绍 Ollama 是一个用于在本地运行大型语言模型 (LLM) 的开源框架。它支持多种平台&#xff0c;包括 Windows、Linux 和 macOS。 Ollama 的主要功能包括&#xff1a; 将 LLM 模型转换为可执行文件 提供简单的命令行界面来运行 LLM 模型 支持多种 LLM 模型&#x…

P8602 [蓝桥杯 2013 省 A] 大臣的旅费【树的直径】

P8602 [蓝桥杯 2013 省 A] 大臣的旅费 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) #include<iostream> #include <algorithm> #include <vector> using namespace std; #define int long long const int N5e5100; int n; int res0; typedef pair<int,…

盘点业务流程管理认证,第3个最权威,考的人最多!

在当今竞争激烈的商业环境中&#xff0c;有效的业务流程管理变得至关重要。为了在这个领域取得成功&#xff0c;拥有相关的认证已经成为一种必要的资格。 市场上目前流行的业务流程管理认证&#xff0c;我总结了3个&#xff0c;分别是&#xff1a;BRMP业务关系管理认证、Lean …

:-1: error: Project ERROR: msvc-version.conf loaded but QMAKE_MSC_VER isn‘t set

qt报错 错误1 : error: Project ERROR: msvc-version.conf loaded but QMAKE_MSC_VER isnt set 错误1 : error: Project ERROR: msvc-version.conf loaded but QMAKE_MSC_VER isn’t set bug的现象:qtcreator无法通过点击pro文件来打开项目 方法:参考 根据上面的参考,我么找到…

谷歌浏览器变黑色背景 扩展程序 Hacker Vision

这个扩展程序能够把浏览器的背景变成黑色&#xff0c;长时间阅读文章的时候护眼效果很不错 效果如下

聚焦价值提升与市场扩张,ATFX任命Ergin Erdemir为拉丁美洲地区负责人

日前&#xff0c;全球知名品牌ATFX宣布一项重磅人事任命&#xff0c;Ergin Erdemir履新拉丁美洲地区负责人。我们相信通过这一重要战略举措&#xff0c;能够加强品牌在全球最具活力地区之一的拉美业务增长的承诺&#xff0c;并巩固品牌在当地的知名度和影响力。 Ergin Erdemi…

Java考题讲解一共5套,也可以在线刷题

【拯救者】Java刷题训练(二级专升本期末自考必备) &#x1f4d9;巩固基础 &#x1f4dc;知道考点 狠狠提分⬆️ (二级专升本期末自考必备) 大纲 一共5套题,每套可以先看视频,然后刷题. 末尾汇总了5套选择 填空 判断题, 优点: 可以查看解析和错题

[C++][算法基础]字符串统计(Trie树)

维护一个字符串集合&#xff0c;支持两种操作&#xff1a; I x 向集合中插入一个字符串 x&#xff1b;Q x 询问一个字符串在集合中出现了多少次。 共有 N 个操作&#xff0c;所有输入的字符串总长度不超过 &#xff0c;字符串仅包含小写英文字母。 输入格式 第一行包含整数…