python字典学习

news2024/11/15 15:44:14

读取和拷贝

if __name__ == '__main__':
    print()
    dictInfo = {1: "This is one", 2: "", 3: '', 5: "This is five"}
    # 字典的读取
    assert (len(dictInfo[1]) > 0)
    assert (len(dictInfo[2]) <= 0)
    assert (len(dictInfo[3]) <= 0)
    if 4 in dictInfo:
        assert (len(dictInfo[4]) <= 0)
    else:
        print("4 is not in dictInfo")

    # 字典的引用拷贝
    # (1) 直接赋值,对象的引用(别名)
    dic1 = {"Name": "HaiCoder", "Age": 100, "Score": 99.5}
    dic2 = dic1
    dic2["Name"] = "Demo"
    print("dic1", json.dumps(dic1))
    print("dic2", json.dumps(dic2))
    # print(json.dumps(dic1, sort_keys=True, indent=4, separators=(',', ':')))

    # (2) copy函数 拷贝父对象,不会拷贝对象的内部的子对象,数组也是个引用
    dic1 = {"Name": "HaiCoder", "Age": 100, "Score": 99.5, "phone": [10086, 10010]}
    dic2 = dic1.copy()
    dic2["Name"] = "Demo"
    print("dic1", json.dumps(dic1))
    print("dic2", json.dumps(dic2))
    dic1["phone"].append(10000)
    dic2["phone"].append(20000)
    print("dic1", json.dumps(dic1))
    print("dic2", json.dumps(dic2))

    # (3) copy.deepcopy, 完全拷贝了父对象及其子对象
    dic1 = {"Name": "HaiCoder", "Age": 100, "Score": 99.5, "phone": [10086, 10010]}
    dic2 = copy.deepcopy(dic1)
    dic2["Name"] = "Demo"
    print("dic1", json.dumps(dic1))
    print("dic2", json.dumps(dic2))
    dic1["phone"].append(10000)
    dic2["phone"].append(20000)
    print("dic1", json.dumps(dic1))
    print("dic2", json.dumps(dic2))
    
    #(4) copy.copy 浅拷贝
    a = [1, 2, 3, 4, ['a', 'b']]  # 原始对象
    b = a  # 赋值,传对象的引用
    c = copy.copy(a)  # 对象拷贝,浅拷贝
    d = copy.deepcopy(a)  # 对象拷贝,深拷贝
    a.append(5)  # 修改对象a
    a[4].append('c')  # 修改对象a中的['a', 'b']数组对象
    print('a = ', a) # [1, 2, 3, 4, ['a', 'b', 'c'], 5]
    print('b = ', b) # [1, 2, 3, 4, ['a', 'b', 'c'], 5]
    print('c = ', c) # [1, 2, 3, 4, ['a', 'b', '4'], 5]
    print('d = ', d) # [1, 2, 3, 4, ['a', 'b']]

在这里插入图片描述

创建和类型

if __name__ == '__main__':
    print()
    # {} 创建字典详解
    dic = {"Name": "HaiCoder", "Age": 100, "Score": 99.5}
    print(dic)
    print(type(dic))  # 使用 type() 函数,获取字典类型

    # 使用 fromkeys()
    # dictName = dict.fromkeys(list,value=None), list 参数表示字典中所有键的列表,value 参数默认为 None,表示所有键对应的值
    keys = ("Name", "Age", "Score")
    dic = dict.fromkeys(keys)
    print(dic)
    dic["Name"] = 1
    dic["Age"] = "2"
    dic["Score"] = [1, "2"]
    dic["Phone"] = {10086, 10010}
    print(dic)
    print(type(dic["Score"]), type(dic["Phone"]))  # Score是list,Phone是set

    # 使用 dict() 创建字典详解
    # dic = dict(one=1, two=2, three=3) # 用这种方式创建字典的 key 不需要加双引号
    dic = dict(Monday=1, Tuesday=2, Wednesday=3, Thursday=4, Friday=5)
    print(dic)

访问和遍历

if __name__ == '__main__':
    print()
    dic = {"Name": "HaiCoder", "Age": 100, "Score": 99.5}
    # (1)使用key作为下标访问,如果键不存在,程序会抛出异常
    print(dic["Name"])
    # (2)使用 get() 方法访问,如果键不存在,程序会不会抛出异常,而是返回一个空值,同时该方法可以设置键不存在时,使用的默认值。
    print(dic.get("Name"), dic.get("name", "nil"), dic.get("name"))
    if dic.get("name") is None:
        print("name not in dic")
    # (3)使用 items() 访问,返回是一个 key 对应一个 value 的元祖的列表的形式
    print(dic.items())

    # (4)使用 keys() 访问,返回的是字典的所有的key list
    print(dic.keys())
    # (5)使用 values() 访问,返回的是字典的所有的val list
    print(dic.values())

    # 遍历
    print("------(1)遍历key------")
    for key in dic:
        print(key)

    print("------(2)遍历key------")
    for key in dic.keys():  # for key in a和 for key in a.keys() 完全等价
        print(key)

    print("------(3)遍历val------")
    for value in dic.values():
        print(value)

    print("------(4)遍历k-v------")
    for kv in dic.items():
        print(kv, kv[0], kv[1])

    # 为啥这里的key和value必须是string
    dic = {"Name": "HaiCoder", "Age": "100", "Score": "99.5"}
    print("------遍历k-v------")
    for (key, value) in dic.items():
        print(key + ':' + value)
    for key, value in dic.items():
        print(key + ':' + value)

删除和弹出

if __name__ == '__main__':
    print()
    # 删除单个元素、删除整个元素
    dic = {"Name": "HaiCoder", "Age": 100, "Score": 99.5}
    # del dic["Phone"] 报错
    del dic["Name"]
    print("dic", dic)
    del dic
    # print("dic", dic) 报错

    # 弹出一个元素
    # 使用 pop 从字典中弹出不存在的元素
    dic = {"Name": "HaiCoder", "Age": 100, "Score": 99.5}
    # print("dic Before pop name", dic)
    # item = dic.pop("name") 报错
    # print("name =", item, "dic After pop name =", dic)
    print("dic Before pop Name", dic)
    item = dic.pop("Name")
    print("Name =", item, "dic After pop Name =", dic)

    dic = {"Name": "HaiCoder"}
    print("dic Before pop Name", dic)
    item = dic.pop("Name")
    print("Name =", item, "dic After pop Name =", dic)  # {}
    
    # 使用 popitem 从字典中随机返回一个元素
    dic = {"Name": "HaiCoder", "Age": 100, "Score": 99.5}
    print("dic before popitem =", dic)
    item = dic.popitem()
    print("Pop Item =", item, "dic after popitem =", dic)
    # 从空字典中弹出元素,程序报错
    # dic = {}
    # item = dic.popitem() 报错
    # print("Pop Item =", item, "dic after popitem =", dic)

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

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

相关文章

昨天去银行转钱,最后怒失300万

**本文首发于公众号【看点代码再上班】&#xff0c;建议关注公众号&#xff0c;及时阅读最新文章。** 原文&#xff1a;昨天去银行转钱&#xff0c;最后怒失300万 大家好&#xff0c;我是Eric&#xff0c;这是我的第24篇原创文章 我的300万"不见"了 小埃年初的时候看…

将grub安装到u盘

安装grub sudo apt-get install grub查看磁盘信息 fdisk -lu盘设备是/dev/sdb 使用fdisk编辑磁盘 fdisk /dev/sdbd命令删除磁盘分区 n命令新建磁盘分区 a命令将分区激活 w命令将更改保存到磁盘 创建两个分区&#xff0c;将其中一个设置活动分区。用于安装grub。剩下的分区可…

【源码解读】扩散模型核心:DDPM专题-结合源码讲解

目录 1. 训练1.1 Uniform({1,...,T})1.2 ϵ ∼ N ( 0 , I ) \boldsymbol{\epsilon} \sim \mathcal{N}(\mathbf{0}, \mathbf{I}) ϵ∼N(0,I)1.3 加噪1.4 加噪图片送入UNet预测加入的噪声1.5 预测的噪声和加入的噪声进行损失计算 2. 采样3. 推理 本次训练采用的是cifar数据集&am…

15天涨粉50万!B站有900万人看过都说“震撼”

“卷”是内容创作者对现在互联网竞争最大的评价&#xff0c;创作者之间复制力极强&#xff0c;导致赛道竞争力大&#xff0c;创作者亟待不断地推动自己找到一个又一个新的内容差异、流量风口。 所以不管是创作者还是品牌&#xff0c;只要是涉及到内容运营的都只有一个目标&…

【C#】反射机制,动态加载类文件

系列文章 【C#】编号生成器&#xff08;定义单号规则、固定字符、流水号、业务单号&#xff09; 本文链接&#xff1a;https://blog.csdn.net/youcheng_ge/article/details/129129787 【C#】日期范围生成器&#xff08;开始日期、结束日期&#xff09; 本文链接&#xff1a;h…

网络解析----yolov3网络解析

Yolov3是一种针对目标检测任务的神经网络模型&#xff0c;其网络结构主要由三个部分组成&#xff1a;特征提取网络、检测头和非极大值抑制&#xff08;NMS&#xff09;模块。特征提取网络采用Darknet-53作为骨干网络&#xff0c;Darknet-53由53个卷积层和5个Max-Pooling层组成&…

死锁的产生

死锁的产生&#xff1a;有一个公共区的玩具&#xff0c;A和B想玩&#xff0c;但是A先得到了玩具&#xff0c;A玩完玩具之后又去干别的事情&#xff0c;但是并没有把玩具还回去&#xff0c;此时B就玩不到了玩具&#xff0c;在无限期的等待。 如下图所示&#xff1a; 线程1把num资…

php压缩一个文件夹,php下载多个图片

$area_id 100;$area_name 一百;shell_exec("cd /www/wwwroot/api/public/images/ && zip -r " . $area_name . ".zip " . $area_id . "/"); 把 100/ 这个文件夹&#xff0c;压缩成 一百.zip 然后得到zip所在的下载url 这个功能&…

百度编辑器(Ueditor)视频上传到阿里云 + 预览不支持FLASH问题解决 + 输入框不展示视频播放页面问题解决

目前需求方提出的问题是以下四个&#xff1a; 1.百度编辑器&#xff08;Ueditor&#xff09;视频上传到阿里云 2.解决不支持FLASH问题 3.视频上传后可以预览 4.修改视频封面 看一下原始的功能是什么样的 上传视频&#xff1a; 视频上传完成 上传视频保存的路径&#xff1…

使用vant组件库

参考网址 Vant Weapp - 轻量、可靠的小程序 UI 组件库 1.在小程序中右键打开外部终端窗口 2.npm init -y 生成package.json 如果没有npm指令则需安装node.js 地址&#xff1a;https://nodejs.org/dist/v18.16.1/node-v18.16.1-x64.msi 3.npm i vant/weapp1.3.3 -S --pro…

PHP 论坛系统mysql数据库web结构apache计算机软件工程网页wamp

一、源码特点 PHP 论坛系统 是一套完善的web设计系统&#xff0c;对理解php编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为PHP APACHE&#xff0c;数据库为 mysql5.0&#xff0c;使用php语言开发。 下载链接…

oracle服务器的CPU占用率一直100%排查方式

背景说明 公司开发、测试、演示环境&#xff0c;三个环境的oracle服务器无论服务器是否空闲&#xff0c; CPU的占用率一直是100%&#xff0c; 一直也没有找到问题原因&#xff0c;今天就花了一整天时间研究这个问题。 通过AWR报告查看oracle运行情况 awr报告是oracle 10g下提…

一种人体属性识别的网络结构

0、前言 人体属性识别&#xff0c;是一个典型的多标签分类场景。每个人体有多个标签&#xff0c;如年龄、性别、衣着颜色等&#xff0c;而每个属性又有多种类别&#xff0c;如年龄分儿童青年老人、性别分男女、颜色分红绿青蓝紫... 本文提供了一个网络结构来执行这种任务。 …

【KVM】命令行安装kvm

命令行安装kvm 一、准备镜像文件 mkdir /home/iso cd /home/iso rz ls CentOS-7-x86_64-Minimal-2009.iso二、使用命令行安装虚拟机 virt-install --virt-typekvm --nameKVM_01 --vcpus4 --memory6000 --location/opt/CentOS-7-x86_64-Minimal-2009.iso --disk path/data/kv…

2021年全国硕士研究生入学统一考试管理类专业学位联考数学试题——纯题目版

2021 年 1 月份管综初数真题 一、问题求解&#xff08;本大题共 5 小题&#xff0c;每小题 3 分&#xff0c;共 45 分&#xff09;下列每题给出 5 个选项中&#xff0c;只有一个是符合要求的&#xff0c;请在答题卡上将所选择的字母涂黑。 1.某便利店第一天售出50种商品&…

联邦学习中的模型聚合

目录 联邦学习中的模型聚合 1.client-server 算法 2. fully decentralized(完全去中心化)算法 联邦学习中的模型聚合 在联邦学习的情景下引入了多任务学习&#xff0c;其采用的手段是使每个client/task节点的训练数据分布不同&#xff0c;从而使各任务节点学习到不同的模型…

[python] 进度条使用

from tqdm import tqdm# 创建一个示例字典 my_dict {a: 1, b: 2, c: 3}# 使用tqdm遍历字典的键 for key in tqdm(my_dict.keys()):# 在这里编写你的代码# 这部分代码将会在进度条中显示pass# 使用tqdm遍历字典的值 for value in tqdm(my_dict.values()):# 在这里编写你的代码#…

查看 git的 config 配置

git config --list // 查看全部配置信息git config user.name // 查看指定配置信息 查看某一个配置信息 git config --global user.email 参考 如何查看gitconfig配置_笔记大全_设计学院

牛客BM21 旋转数组的最小数字

描述 有一个长度为 n 的非降序数组&#xff0c;比如[1,2,3,4,5]&#xff0c;将它进行旋转&#xff0c;即把一个数组最开始的若干个元素搬到数组的末尾&#xff0c;变成一个旋转数组&#xff0c;比如变成了[3,4,5,1,2]&#xff0c;或者[4,5,1,2,3]这样的。请问&#xff0c;给定…

IDEA远程DeBug调试

1. 介绍 当我们在开发过程中遇到一些复杂的问题或需要对代码进行调试时&#xff0c;远程调试是一种非常有用的工具。使用 IntelliJ IDEA 进行远程调试可以让你在远程服务器上的应用程序中设置断点、查看变量和执行调试操作。 远程调试的好处如下&#xff1a; 提供更方便的调试…