首页 > 编程语言 >PYTHON学习笔记(六、python数据结构--字典)

PYTHON学习笔记(六、python数据结构--字典)

时间:2024-07-20 11:25:08浏览次数:16  
标签:lst2 zip PYTHON python 键值 key -- lst1 字典

(3)dict字典

字典数据类型的含义是:根据一个信息查找另一个信息的方式构成了“键值对”,它表示索引用的键和对应的值构成对应的关系。

1、字典的创建方式

1)使用{  }直接创建字典

使用{  }创建字典的语法结构如下:

d = {key1:value1,key2:value2......}

例如:

#使用{ }创建字典
d = {10:'cat',20:'dog',30:'pet',20:'zoo'}
print(d)


输出结果:
{10: 'cat', 20: 'zoo', 30: 'pet'}

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

使用映射函数zip( )创建字典的语法结构如下:

#zip函数
lst1 = {10,20,30,40}
lst2 = {'cat','dog','pet','zoo','car'}
zipobj = zip(lst1 , lst2)
print(zipobj)


输出结果:
<zip object at 0x0000025EB4C51C40>

输出结果表明我们使用映射函数zip( )将两个字典打包成了元组,因此在输出zip( )函数时,会输出一个生成器对象,不能输出内容,因此,我们还需要使用内置函数dict( )调用其内容,如下所示:

#zip函数
lst1 = [10,20,30,40]
lst2 = ['cat','dog','pet','zoo','car']
zipobj = zip(lst1 , lst2)
zipobj1 = dict(zipobj)
print(zipobj1)


输出结果:
{10: 'cat', 20: 'dog', 30: 'pet', 40: 'zoo'}

3)使用“ 字典生成式 ”创建字典

字典生成式的含义:用来生成字典的表达式。

d = {key:value for item in range}
d = {key:value for key,value in zip(lst1,lst2)}

例如:

import random
d = {i : random.randint(1,100) for i in range(4)}
print(d)


输出结果:
{0: 7, 1: 17, 2: 33, 3: 40}

这段代码的逻辑是:导入随机数库,使用生成式生成四个序列号,这四个序列号上的值为" i : random . randint ( 1 , 100 ) "的字典,最后输出“ d ”,结果为一个字典包含四个” 键值对 ”。

例如:

#创建两个列表
lst1 = [1001,1002,1003]
lst2 = ['小鬼','gg boy','giegie']
d = {key:value for key,value in zip(lst1,lst2)}
print(d)


输出结果:
{1001: '小鬼', 1002: 'gg boy', 1003: 'giegie'}

这段代码的逻辑是:首先创建两个列表,通过” zip( ) ”函数将两个列表分别打包成元组,然后key和value在里面遍历搜索,最后输出” 键值对 “格式。

2、字典的访问方式

1)字典元素的取值

由于字典中的键key是无序的,因此我们需要对字典进行取值操作。

字典元素的取值语法:

d[key]或d.get(key)

例如:

#创建两个列表
lst1 = [1001,1002,1003]
lst2 = ['小鬼','gg boy','giegie']
d = {key:value for key,value in zip(lst1,lst2)}
print(d)
d1 = d[1001]
print(d1)


输出结果:
{1001: '小鬼', 1002: 'gg boy', 1003: 'giegie'}
小鬼

上面代码的逻辑是:

1、首先生成两个列表

2、使用“ 字典生成式 ”生成一个(列表1)和 (列表2)相对应的字典(键值对)

3、从输出的字典中通过索引键,来输出值

2)字典元素的遍历

例如:

#创建两个列表
lst1 = [1001,1002,1003]
lst2 = ['小鬼','gg boy','giegie']
d = {key:value for key,value in zip(lst1,lst2)}
print(d)
for i in d.items():
    print(i)


输出结果:
{1001: '小鬼', 1002: 'gg boy', 1003: 'giegie'}
(1001, '小鬼')
(1002, 'gg boy')
(1003, 'giegie')

上述代码的逻辑是:

1、创建两个列表

2、使用“ 字典生成式 ”生成一个(列表1)和 (列表2)相对应的字典(键值对)

3、使用d.items(  )函数,将字典中一对键值对组成一个项目元组(即4对元组)

4、最后输出4对元组

3、字典的修改操作

字典的方法说明
d.keys(  )获取所有键key的数据
d.values(  )获取所有value值得数据
d.pop(  )通过键key获取对应的值valule,同时在字典中删除这个“键值对”,否则获取默认值

d.popitem(  )

随机从字典中抽出一个“键值对”,结果为两个元组类型,同时将该“键值对”删除
d.clear(  )清空字典中所有的“键值对”
d.items(  )将字典中的一对“键值对”打包成一个元组,然后输出

至此,我们已经了解了字典的大致用法并学会基本的使用方法啦!!!(●ˇ∀ˇ●)

标签:lst2,zip,PYTHON,python,键值,key,--,lst1,字典
From: https://blog.csdn.net/tommorrowwill/article/details/140553013

相关文章

  • 127java jsp SSM乡镇篮球队管理系统球队球员赛程管理(源码+文档+运行视频+讲解视频)
     项目技术:SSM+Maven+Vue等等组成,B/S模式+Maven管理等等。环境需要1.运行环境:最好是javajdk1.8,我们在这个平台上运行的。其他版本理论上也可以。2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA;3.tomcat环境:Tomcat7.x,8.x,9.x版本均可4.硬件环境:windows7/8/1......
  • SqlServer数据库图片存取方式
    在数据库中存取图片文件一般有2中方式,一存储字节流,二存储图片存放路径,这里分别介绍一下两种方式。数据库示例表createdatabsemydbgousemydb--示例表1用户表(存储图片字节流)createtableusers(idintidentity(1,1)primarykey,usernamevarchar(30),photoimage)......
  • Codeforces Round 959 sponsored by NEAR (Div. 1 + Div. 2)
    A.给定n*m的矩阵a,构造一个同样大小的矩阵b使得[1,n*m]都出现一次,且b和a在任意位置上都不相等。特判完无解后循环移位即可。#include<bits/stdc++.h>usingnamespacestd;inta[12][12];voidsolve(){ intn,m; cin>>n>>m; for(inti=1;i<=n;i++) for(intj=1;j<=m;j++)......
  • 前端异步解决方案
    四种异步解决方案1、回调函数回调简单地理解为一个函数作为参数传递给另一个函数,回调是早期最常用的异步解决方案之一缺点:代码不优雅,可读性差,不易维护,耦合度高,层层嵌套造成回调地狱2、Promise(es6)Promise是一种异步编程的解决方案。简单来说,Promise就是对异步的执行结果的描......
  • Solution Set - 容斥原理/二项式反演
    https://www.becoder.com.cn/contest/5400「BZOJ2863」愤怒的元首题目就是求\(n\)个点DAG的数量。设\(dp_i\)表示\(i\)个点的DAG数量。首先DAG一定存在出度为\(0\)的点,其次删去出度为\(0\)的点,仍构成一个DAG。所以我们可以枚举删去的数量,从而划分子问题。......
  • 数论学习笔记
    ExGCD:目的:求形如\(Ax+By=C\)的不定方程的通解有解判断:方程有解的充要条件是\(Gcd(a,b)|C\),可以使用数论知识证明问题简化:将问题简化为求\(Ax+By=Gcd(a,b)\)的通解,先求他的一组解。思路及证明:使用递归的思想减小A和B的值,直至方程变为\(x=Gcd(x,0)\)的形式。已知:\[Gc......
  • 一、Oracle DB服务器体系结构概览。
    一、OracleDB服务器体系结构概览。  OracleDB服务器体系结构包含以下三种主要结构:内存结构、进程结构和存储结构。基本的OracleDB系统由OracleDB和数据库实例组成。数据库包括物理结构和逻辑结构。由于物理结构和逻辑结构是分开的,因此管理数据的物理存储时不会影响......
  • vue实现选中左边数据到右边
    vue<template><divclass="container"><el-row><el-col:span="4"><!--左边列表项--><divclass="scrollable-menu"><el-menuclass="e......
  • 常见的排序算法——堆排序(二)
    本文记述了针对堆排序微小改动的基本思想和一份参考实现代码,并在说明了算法的性能后用随机数据进行了验证。◆思想堆的下沉操作中用到了昂贵的数据交换操作,此改动参考无交换的插入排序的思想,实现了减少数据交换的下沉操作。先将要下沉的元素存放在临时空间中,再将下降过程中遇......
  • 前端模块化
    前端模块化将逻辑代码拆分成独立的块,各自封装,互相独立前端模块化的目的:使代码更易于维护,测试和重构。提升代码的可复用性和开发效率目前流行的js模块化规范:CommonJS,AMD,CMD,ES6模块化ES6是静态加载,其他都是动态加载1、CommonJSCommonJS用同步的方式加载模块,适用于服务端编程......