青少年python大赛知识点学习5--字典

news2024/12/26 11:07:27

        python中的字典,与我们使用的新华字典有点像。索引与对象,新华字典存的是每个字的相关内容,python中的字典是一个容器类型的数据结构,通过key进行索引。

1.什么是字典

  1. 字典是python内置的重要数据之一,与列表一样是一个可变序列。
  2. 以键值对(key:value)的方式存储数据,字典是一个无序的序列,列表是一个有序序列。
  3. 用{}来定义字典.
  4. 字典是Python语言中唯一的映射类型。字典对象是可变的,它是一个容器类型,能存储任意个数的Python对象,其中也可包括其他容器类型。

2.字典的创建

        字典中的key是非常关健的数据,而且在程序中需要通过key来调用访问value值,因此字典中的key不能重复。两种创建方法:

1.使用{}创建

创建时,{}中应包含多个key_value对,key与value 之间用英文冒号隔开,多个key-value对以英文逗号隔开。小学生巧记:字典为“逗大猫”({,:})。

# -*- coding: utf-8 -*-
# @Time : 2023年11月05日 10时26分
# @Email : cf200908@126.com
# @Author : Chenfengyi
# @File : 字典.py
# @notice :


treeword = {}  # 空字典
print(treeword)
twoword = {'桌子': 'desk', '书': 'book'}  # key与value均为字符串
print(twoword)
dict3 = {(1, 5): '合格', (1, 3): '优秀', 10: '李明'}  # key为元组,整数,value均为字符串,
print(dict3)
dict3 = {2: '合格', (1, 3): 500, 10: '李明'}
print(dict3)

2.使用dict()函数创建

使用dict()函数创建字典时,可以传入多个元组或列表参数作为key_value对。每个列表或元组将作为key_value对,所以只能包含两个元素,如下:

word=((1, 3), (1, 3))
d1=dict(word)
print(d1)
word=((1, 3), (5, 3))
d1=dict(word)
print(d1)
word=[(1, 'good'), (1, 'book')]
d1=dict(word)
print(d1)
word=[('好', 'good'), ('书', 'book')]
d1=dict(word)
print(d1)
dictempty=dict()
print(dictempty)

结果:
{1: 3}
{1: 3, 5: 3}
{1: 'book'}
{'好': 'good', '书': 'book'}
{}

3.字典的基本用法

注意,字典包含多个k-v对,而key是字典的关健数据,所以对字典的操作都是基于key的

通过key访问值

通过key添加值

cj={'语文':85,'数学':105,'英语':98}
print(cj)
print(cj['英语'])
print(cj['美术'])

Traceback (most recent call last):
  File "F:/le_python/csdn/字典增删改查.py", line 11, in <module>
    print(cj['美术'])
KeyError: '美术'
{'语文': 85, '数学': 105, '英语': 98}
98

通过key修改值

通过key删除值

cj={'语文':85,'数学':105,'英语':98}
print(cj)
print(cj['英语'])
if '美术' not in cj:
    cj['美术'] = 99
    print('没用美术成绩')
else:
    print(cj['美术'])
print(cj)

del cj['美术']
print(cj)

结果:
{'语文': 85, '数学': 105, '英语': 98}
98
没用美术成绩
{'语文': 85, '数学': 105, '英语': 98, '美术': 99}
{'语文': 85, '数学': 105, '英语': 98}

进程已结束,退出代码 0

通过key确定key-value对是否存在

cj={'语文':85,'数学':105,'英语':98}
print(cj)
print(cj['英语'])
if '美术' not in cj:
    print('没用美术成绩')
else:
    print(cj['美术'])


结果:
{'语文': 85, '数学': 105, '英语': 98}
98
没用美术成绩
    字典相当于索引是任意不可变的类型列表,而列表相当于key只能是整数的字典,因此如果程序中要使用的字典的key都是整数类型,则可以考虑能否换成列表。

     列表不充许对不存在的索引赋值,而字典可以。

4.字典的常用方法

print(dir({}))
print(dir(dict))
lb=dir({})
b=[]
for a in lb:
    if '_' not in a:
        b.append(a)        
print(b)
结果:
['__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'clear', 'copy', 'fromkeys', 'get', 'items', 'keys', 'pop', 'popitem', 'setdefault', 'update', 'values']
['__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'clear', 'copy', 'fromkeys', 'get', 'items', 'keys', 'pop', 'popitem', 'setdefault', 'update', 'values']
['clear', 'copy', 'fromkeys', 'get', 'items', 'keys', 'pop', 'popitem', 'setdefault', 'update', 'values']

常用方法:

'clear':清空字典

 'copy':复制

 'fromkeys':使用多个给定的多个key创建字典,key对应的寄默认值为none也可指定默认值

cj=dict.fromkeys(['数学','语文'])
print(cj)
cj=dict.fromkeys(('数学','语文'))
print(cj)
cj=dict.fromkeys(('数学','语文'),80)
print(cj)

{'数学': None, '语文': None}
{'数学': None, '语文': None}
{'数学': 80, '语文': 80}

 'items'

 'keys',

'values'

cj=dict.fromkeys(['数学','语文'])
print(cj)
cj=dict.fromkeys(('数学','语文'))
print(cj)
cj=dict.fromkeys(('数学','语文'),80)
print(cj)

print('items',cj.items)
print('keys',cj.keys)
print('values',cj.values)


print('items',list(cj.items()))
print('keys',list(cj.keys()))
print('values',list(cj.values()))

结果:
{'数学': None, '语文': None}
{'数学': None, '语文': None}
{'数学': 80, '语文': 80}
items <built-in method items of dict object at 0x02169180>
keys <built-in method keys of dict object at 0x02169180>
values <built-in method values of dict object at 0x02169180>
items [('数学', 80), ('语文', 80)]
keys ['数学', '语文']
values [80, 80]

 'get':根据key获得value值,相当于[]语法的增强版,使用[]获得不存在的key时会引发keyerro错误,get()会返回none,不引起错误。

'pop',

'popitem',

'setdefault',

'update'

有空自已试试。

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

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

相关文章

Intel oneAPI笔记(2)--jupyter官方文档(oneAPI_Intro)学习笔记

前言 本文是对jupyterlab中oneAPI_Essentials/01_oneAPI_Intro文档的学习记录&#xff0c;包含对SYCL、DPC extends SYCL、oneAPI Programming models等介绍和SYCL代码的初步演示等内容 oneAPI编程模型综述 oneAPI编程模型提供了一个全面而统一的开发人员工具组合&#xff0…

Go与数据库:NoSQL数据库的应用

大家好&#xff01;我是[lincyang]。 今天我们将一起探索Go语言与NoSQL数据库结合的强大能力&#xff0c;并通过五个实际案例来深入理解它们的应用。 1. Go与MongoDB的结合 1.1 用户管理系统 在用户管理系统中&#xff0c;我们需要存储用户的基本信息和权限设置。MongoDB的…

MQTT协议零基础快速入门

MQTT协议零基础快速入门 MQTT&#xff08;Message Queuing Telemetry Transport&#xff09;是一种轻量级的发布/订阅消息传输协议&#xff0c;广泛应用于物联网&#xff08;IoT&#xff09;和机器对机器&#xff08;M2M&#xff09;通信场景。它具有简单、开放、易于实现等优…

产品经理入门学习(五):思维导图 原型设计

参考引用 黑马-产品经理入门基础课程 1. 思维导图的作用和应用场景 什么是思维导图&#xff1f; 思维导图是一种将思维进行可视化的实用工具。具体实现方法是用一个关键词去引发相关想法&#xff0c;再运用图文并茂的技巧把各级主题的关系用相互隶属的层级表现出来&#xff0c;…

多态 虚函数表深度剖析 纯干货讲解(2)

&#x1f4af; 博客内容&#xff1a;多态 &#x1f600; 作  者&#xff1a;陈大大陈 &#x1f680; 个人简介&#xff1a;一个正在努力学技术的准C后端工程师&#xff0c;专注基础和实战分享 &#xff0c;欢迎私信&#xff01; &#x1f496; 欢迎大家&#xff1a;这里是CSD…

crond服务

目录 一、crond服务基础知识 1、crond服务介绍 2、查看crond服务的状态 3、crond服务配置文件详解 4、额外的配置文件目录 二、crond服务基础命令 1、crond服务使用 2、 管理和操作 crond 服务 3、crond服务命令举例 一、crond服务基础知识 1、crond服务介绍 1、crond…

【redis面试题】双写一致性

文章目录 前言一、什么是双写一致性1. 先删除缓存还是先修改数据库1.1 先删除缓存的情况1.2 先修改数据库的情况 2. 双写一致性的解决方案 二、允许延迟一致的解决方法1. 采用 MQ 中间件2. 采用 canal 中间件 三、强一致性的解决方法1. 采用 Redisson 提供的读写锁 前言 跟着B…

7-2 数论中的模幂运算

solution 欧拉函数法可以解决模幂运算 #include<stdio.h> #include<math.h> int main(){int a, m, n, r1;scanf("%d%d%d", &a, &m, &n);while(m){if(m&1) r(r*a)%n;a(a*a)%n;m>>1; }printf("%d", r);return 0; }给定伪…

AtCoder Beginner Contest 327 G. Many Good Tuple Problems(带标号二分图计数+有区别小球放入有区别盒子)

题目 一个长为n(n<30)的原始序列x&#xff0c;x[i]可以取值0或1 一个长为m(m<1e9)的点对序列(s,t)&#xff0c; s序列第i项和t的第i项&#xff0c;均可以取值[1,n]&#xff0c; 如果构造好s和t后&#xff0c;对任意都存在01序列x使得&#xff0c; 则称这个序列是合法…

基于8086家具门安全控制系统设计

**单片机设计介绍&#xff0c;基于8086家具门安全控制系统设计 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 # 8086家具门安全控制系统设计介绍 8086家具门安全控制系统是一种用于保护家具和保证室内安全的系统。该系统基于808…

类的成员函数总结

前言&#xff1a; 如果一个类中什么成员都没有&#xff0c;简称为空类。 空类中真的什么都没有吗&#xff1f;并不是&#xff0c;任何类在什么都不写时&#xff0c;编译器会自动生成以下6个默认成员函数。 默认成员函数&#xff1a;用户没有显式实现&#xff0c;编译器会生成的…

【java学习—十三】处理流之一:缓冲流(1)

文章目录 0. 引言1. 缓冲流2. 缓冲字节流2.1. 缓冲字节输入流2.2. 缓冲字节输出流2.3. 缓冲流实现文件的复制 3. 缓冲字符流 0. 引言 上一章节讲了&#xff1a;文件字符流和字节流&#xff08;基于硬盘&#xff09; 其中&#xff0c;用到的方法有&#xff1a;FlieInuputStream、…

JDBC简单流程

Step1&#xff1a;加载对应数据库&#xff08;比如mysql、oracle、sqlserver&#xff09;的驱动器 1、以mysql驱动器为例&#xff0c;下载好对应的jar包后&#xff0c;在项目对应目录下新建一个lib文件夹&#xff0c;将jar包复制到该文件夹中。 2、然后选中改jar包&#xff0…

链队的练习

链队的练习 相关内容&#xff1a;队列的链式存储结构&#xff08;链队&#xff09; //链队的初始化、入队、出队、取对头 #include<stdio.h> #include<malloc.h> #define OK 1 #define ERROR 0 typedef int Status; //结点结构 typedef struct QNode{ int data; …

单链表的应用(1)

移除链表元素 给你一个链表的头节点 head 和一个整数 val &#xff0c;请你删除链表中所有满足 Node.val val 的节点&#xff0c;并返回 新的头节点 。 思路&#xff1a;&#xff08;1&#xff09;创建三个结构体指针&#xff0c;分别代表一条新链表的头newhead&#xff0c;…

2023 electron最新最简版打包、自动升级详解

这里我将讲解一下从0搭建一个electron最简版架子&#xff0c;以及如何实现打包自动化更新 之前我有写过两篇文章关于electron框架概述以及 常用api的使用&#xff0c;感兴趣的同学可以看看 Electron桌面应用开发 Electron桌面应用开发2 搭建electron 官方文档&#xff1a;ht…

基于变色龙算法的无人机航迹规划-附代码

基于变色龙算法的无人机航迹规划 文章目录 基于变色龙算法的无人机航迹规划1.变色龙搜索算法2.无人机飞行环境建模3.无人机航迹规划建模4.实验结果4.1地图创建4.2 航迹规划 5.参考文献6.Matlab代码 摘要&#xff1a;本文主要介绍利用变色龙算法来优化无人机航迹规划。 1.变色龙…

5 ip的分配

如上一节所述&#xff0c;需要和其他设备通信&#xff0c;那么需要先配置ip. 1、如何配置ip 1.可以使用 ifconfig&#xff0c;也可以使用 ip addr 2.设置好了以后&#xff0c;用这两个命令&#xff0c;将网卡 up 一下&#xff0c;就可以了 //---------------------------- 使…

VBA技术资料MF79:将范围级别由工作簿变更为工作表

我给VBA的定义&#xff1a;VBA是个人小型自动化处理的有效工具。利用好了&#xff0c;可以大大提高自己的工作效率&#xff0c;而且可以提高数据的准确度。我的教程一共九套&#xff0c;分为初级、中级、高级三大部分。是对VBA的系统讲解&#xff0c;从简单的入门&#xff0c;到…

JavaEE-博客系统2(功能设计)

本部分内容&#xff1a;实现博客列表页&#xff1b;web程序问题的分析方法&#xff1b;实现博客详情页&#xff1b; 该部分的代码如下&#xff1a; WebServlet("/blog") public class BlogServlet extends HttpServlet {//Jackson ObjectMapper类(com.fasterxml.jac…