【马士兵】Python基础--08(字典)

2023-11-15

Python基础–08

基础知识

可变序列:目前包括字典、列表

不可变序列:目前包括整数,字符串

区别在于可变序列可以进行增、删、查、改操作,而不可变序列不可以进行

字典的组成及原理

字典是由键值对组成的,字典是无序的排列方式,他不是根据你输入键的前后顺序来存储他,而是根据键的哈希值来存储

也是由于这个原因,字典的键必须是一个不可变序列,而且键不可以重复

语法格式如此:字典名={键:值,键:值,…}

字典的实现原理

他是先由哈希函数计算键从而得到不同键的索引,然后根据键的索引排序键,键中保存的是值的地址,从而达到引用键而找到值的效果

字典特点

1.字典中键值对是一一对应的,其中,键是不可以重复的,而值是可以重复的

2.字典中的键值对是无序的

3.字典是一种用空间换时间的数据结构

4.字典的键必须是不可变对象

在这里插入图片描述

字典的创建方式

字典的创建方式总共有两种

1.通过{}创建字典

score={'tom':85,'jack':92,'sam':'pass'}
print(score)                        #输出{'tom': 85, 'jack': 92, 'sam': 'pass'}

print(type(score))                  #输出<class 'dict'>

2.通过内置函数dict()创建字典

在()里面写入键值对,与{}不同的是,这种创建方式为键=值,而不是键:值,这点需要注意

student=dict(tom=85,jack=92,sam='pass')
print(student)                      #输出{'tom': 85, 'jack': 92, 'sam': 'pass'}
print(type(student))

3.创建一个空列表

empty={}                            #输出{}
print(empty)

empty1=dict()
print(empty1)

字典元素的获取

字典元素的获取有两种方法:

在这里插入图片描述

1.使用[]获取,[]里面是键值

print(score['tom'])             #输出58

#print(score['alice'])               #如果查找不到,就会报错:KeyError: 'alice'

2.使用get()方法获取

score={'tom':58,'linda':62,'jack':98}
print(score.get('tom'))             #输出58

print(score.get('alice'))           #如果查找不到就会输出:None,这个none是可以代替的,在键后面加入替代的值,找不到就会输出替代的值

print(score.get('alice',56))        #输出56,如果查找不到就会默认输出键后面的值

字典元素的增删改操作

在这里插入图片描述

scores={'张三':100,'李四':98,'王五':105}
print('张三' in scores)
print('张三' not in scores)
 
del scores['张三']#删除指定的键值对
print(scores)
scores.clear()
print(scores)
# {'李四': 98, '王五': 105}
# {}
 
scores['陈六']=100
print(scores)
# {'陈六': 100}

获取字典视图

实际上就是获取字典里面所有的键,所有的值,以及所有的键值对

这三种东西的获取方法各有不同,虽然方法各不一样,但是操作原理,用法都是一样的

在这里插入图片描述

获取所有的键

keys()函数

score={'tom':58,'linda':62,'jack':98}

a=score.keys()
print(a)            #输出dict_keys(['tom', 'linda', 'jack'])
#可以将输出的键进行列表化,获得键的列表

print(list(a))      #输出['tom', 'linda', 'jack']

获取所有的值

values()函数

score={'tom':58,'linda':62,'jack':98}
b=score.values()
print(b)                # 输出dict_values([58, 62, 98])
print(list(b))          #输出[58, 62, 98]

获取所有的键值对

items()函数

score={'tom':58,'linda':62,'jack':98}

print(score.items())        #输出dict_items([('tom', 58), ('linda', 62), ('jack', 98)])
print(list(score.items()))          #输出[('tom', 58), ('linda', 62), ('jack', 98)]

字典元素的遍历

使用for in循环进行遍历

score={'tom':58,'linda':62,'jack':98}

for i in score:          #这里的i表示的是键,如果要获取字典的值,就需要使用[]获取或者get函数获取
    print(i,score[i],score.get(i))

字典生成式

在这里插入图片描述

实际上和列表生成式差不太多,多使用了一个内置函数zip,而且由于字典是由键值对组成的,所以需要两个可迭代对象

zip函数组成字典生成式里面,如果键的个数和值得个数不相同时,以小的为准

items=['books','fruits','papers']

prices=[98,56,233]

a={i:j for i,j in zip(items,prices)}
print(a)

prices1=[978,5,5,6451,1]            #当键和值的个数不一样的时候,以短的为准

b={m:n for m,n in zip(items,prices1)}
print(b)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【马士兵】Python基础--08(字典) 的相关文章

随机推荐

  • 经过几年和前端调接口,我把抓包调试摸透了,浏览器岂非我对手

    场景 我们在和前端对接接口的时候 前端都是根据后端提供的接口api swagger地址或者yapi 其他接口管理平台进行接口联调 mock一些测试数据调试 调好了然后在本地和后端联调接口 没有问题后再发测试环境 测试环境再发预发布 预发布通
  • 打工族必看!省钱订餐攻略,经本人亲测多日!

    这不是广告哦 不像其他平台一样需要扫码关注等等 我的常用平台是不需要关注的 只要领取即可使用 我已经在这个平台点外卖很久了 几个月了 平常我会在这个平台领取优惠券 和同事一起拼单下单 每个人能省下三四块钱 有时候多的话可以省下七八块钱 这个
  • DevEco studio 一直加载gradle

    在使用DevEco studio 时一直处于提示gradle的问题 该现象和之前的Androoid Studio类似一直去网络中请求下载指定的gradle的版本 此时类比Android Studio先将gradle版本下载下来 然后放置在指
  • snort 源码分析之模式匹配引擎

    snort是一款著名的开源IPS 其主页地址 snort 官网 更详细的介绍网上很多 可自行搜索了解 本博客主要介绍snort 2 9 5版本的模式匹配引擎的加载和匹配 模式匹配引擎主要使用多模式匹配算法和单模式匹配算法 先由多模式匹配算法
  • Javaweb网站用户注册登录实现小记

    用户注册登录过程主要分为几个步骤 1 前端页面设计 2 数据访问模型包 3 Servlet容器数据接收处理 4 跳转至页面 下面分步骤小记一下 供以后参考 整个实现环境 Eclipse Version 2018 09 4 9 0 Eclip
  • 【满分】【华为OD机试真题2023B卷 JAVA&JS】叠积木

    华为OD2023 B卷 机试题库全覆盖 刷题指南点这里 叠积木 知识点哈希表 时间限制 1秒 内存限制 262144K 语言限制 不限 题目描述 有一堆长方体积木 它们的宽度和高度都相同 但长度不一 小橙想把这堆积木叠成一面墙 墙的每层可以
  • 1033 旧键盘打字 Python实现

    1033 旧键盘打字 20 20 分 旧键盘上坏了几个键 于是在敲一段文字的时候 对应的字符就不会出现 现在给出应该输入的一段文字 以及坏掉的那些键 打出的结果文字会是怎样 输入格式 输入在2行中分别给出坏掉的那些键 以及应该输入的文字 其
  • PC微信逆向:破解聊天记录文件!

    作者 newx 链接 https bbs pediy com thread 251303 htm 在电子取证过程中 也会遇到提取PC版微信数据的情况 看雪 52破解和CSDN等网上的PC版微信数据库破解文章实在是太简略了 大多数只有结果没有
  • MySQL中通过一条语句来统计符合不同条件的COUNT

    现在有两个表record 和 info 其中表record存放每次通话记录的主动呼出号码与被动呼入号码 表Info存放人名和对应号码 如下 现在的目的是统计每个人的手机号码主动呼出次数与被动呼入次数 就用到下列语句即可 SELECT nam
  • Openlayers 坐标系全面解析

    目录 EPSG 4326 EPSG 3857 EPSG 4326 与 EPSG 3857 的坐标转换 EPSG 4490 Openlayers 自定义坐标系 EPSG 4490 和 EPSG 4525 EPSG 4326 EPSG 3857
  • CTFshow-pwn入门-前置基础pwn23-pwn25

    pwn23 25的题目会涉及到ret2shellcode ret2libc等内容 本篇文章只会侧重研究这几道题目的wp 不会过多涉及到ret2shellcode ret2libc的基本原理 等有时间再来写关于ret2libc ret2she
  • 移动游戏平台的新趋势分享—91-mgas大会

    移动游戏平台的新趋势分享 91 mgas大会 随着智能手机与平板电脑等设备的普及 移动游戏以惊人的速度深入到人们生活当中 玩家的选择范围进一步扩大 包括角色扮演 策略游戏 棋牌游戏 休闲益智 动作冒险 但耐心在降低 而角色扮演和策略游戏的混
  • 【单片机毕业设计】【mcuclub-dz-047】基于单片机的消毒器设计

    最近设计了一个项目基于单片机的消毒器设计 与大家分享一下 一 基本介绍 项目名 基于单片机的消毒器的设计 项目编号 mcuclub dz 047 单片机 STM32F103C8T6 功能简介 1 通过液位传感器检测液位 当液位较低 通过GS
  • java毕业设计——基于JSP+J2EE+sqlserver的超市综合信息管理系统设计与实现(毕业论文+程序源码)——超市综合信息管理系统

    基于JSP J2EE sqlserver的超市综合信息管理系统设计与实现 毕业论文 程序源码 大家好 今天给大家介绍基于JSP J2EE sqlserver的超市综合信息管理系统设计与实现 文章末尾附有本毕业设计的论文和源码下载地址哦 需要
  • 如何在python pyqt窗口中,嵌入notepad、word、计算器

    import sys from PyQt5 QtWidgets import QApplication QWidget from ctypes import 成功了 class App QWidget def init self super
  • GIS状态检测新技术——振动分析法

    提示 唐老师好 我之前因为 阳 了 所以就没有参与汇报 给老师带来不便 请老师见谅 以此篇文章代替课堂汇报 文章目录 前言 一 不同故障对应的振动频谱和故障特征量 二 GIS设备振动特征估计 1 GIS设备状态空间 2 粒子滤波 三 GIS
  • vue+element-ui 项目实战示例详解【目录】

    vue 和 element是两个流行的前端即时 通常用于管理后台 PC等页面 能够快速构建美观的界面 1 vue2 介绍 Vue js是一个流行的JavaScript框架 用于构建用户界面 它的版本分为Vue 2和Vue 3 而Elemen
  • bootstrap 和 ant design css样式 冲突 导致图标移位

    bootstrap 和 ant design 冲突 导致图标移位 body anticon transform translate 0 5px 3px
  • 命令模式代码示例

    package com example mingling 执行命令的接口 author Administrator public interface Command void execute package com example ming
  • 【马士兵】Python基础--08(字典)

    Python基础 08 文章目录 Python基础 08 基础知识 字典的组成及原理 字典的创建方式 字典元素的获取 字典元素的增删改操作 获取字典视图 字典元素的遍历 字典生成式 基础知识 可变序列 目前包括字典 列表 不可变序列 目前包