0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

python语言之字典dict简析

冬至配饺子 来源:缪斯之子 作者:肖新苗 2022-08-23 10:17 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

1.基本的增删改查

def test_1():
# 增删改查
dict1 = {'a': 1, 'b': 2}
dict1['c'] = 3
assert {'a': 1, 'b': 2, 'c': 3} == dict1, 'dict 新增失败'

del dict1['b']
assert {'a': 1, 'c': 3} == dict1, 'dict 删除失败'
dict1['c'] = 4
assert {'a': 1, 'c': 4} == dict1, 'dict 修改失败'

c = dict1['c']
assert 4 == c, 'dict 查询失败'
pass

2. in和enumerate方法

def test_2():
# in, enumerate
dict1 = {'a': 1, 'b': 2}
indexs = [i for i, v in enumerate(dict1.items()) if v[0] == 'b']
assert [1] == indexs, 'dict enumerate error'

assert 'a' in dict1, 'dict in error'
pass

3.方法: setdefault,update,get,pop,popitem

def test_3():
# setdefault,update,get,pop,popitem
# setdefault 如果没有则增加,有则不变
dict1 = {'a': 1, 'b': 2}
dict1.setdefault('c', 4)
assert {'a': 1, 'b': 2, 'c': 4}, 'dict setdefault error'

dict1.setdefault('b', 1)
assert {'a': 1, 'b': 2, 'c': 4} == dict1, 'dict setdefault b error'

dict1.update({'c': 5})
assert {'a': 1, 'b': 2, 'c': 5} == dict1, 'dict update error'

c = dict1.get('c', 1)
assert 5 == c, 'dict get error'

f = dict1.get('f', 1)
assert 1 == f, 'dict get f error'

dict1.pop('c')
assert {'a': 1, 'b': 2} == dict1, 'dict pop error'

dict1.popitem()
assert {'a': 1} == dict1, 'dict popitem error'

pass

4. sort

def test_4():
# sort
dict1 = {'b': 2, 'a': 1}
dict2 = dict(sorted(dict1.items(), key=lambda kv: kv[0]))
assert {'a': 1, 'b': 2} == dict2, 'dict sorted 1 error'

dict1 = {'b': 2, 'a': 1, 'c': 1}
dict2 = dict(sorted(dict1.items(), key=lambda kv: (kv[1], kv[0])))
assert {'a': 1, 'c': 1, 'b': 2}

pass

5.浅复制和深复制

import copy

def test_5():
# 浅复制 和 深度复制
# 1.浅复制:不改变原字典
dict1 = {'a': 1, 'b': 2}
dict2 = dict1.copy()
dict2.update({'b': 1})
assert {'a': 1, 'b': 2} == dict1, 'dict copy 1 error'
assert {'a': 1, 'b': 1} == dict2, 'dict copy 1.1 error'

# 2.浅复制:改变原字典--子对象
dict1 = {'a': 1, 'b': {'c': 1}}
dict2 = dict1.copy()
dict2['b'].setdefault('d', 2)
assert {'a': 1, 'b': {'c': 1, 'd': 2}} == dict1, 'dict copy 2 error'
assert {'a': 1, 'b': {'c': 1, 'd': 2}} == dict2, 'dict copy 2.1 error'

# 3.深复制:不改变原字典
dict1 = {'a': 1, 'b': {'c': 1}}
dict2 = copy.deepcopy(dict1)
dict2['b'].setdefault('d', 2)
assert {'a': 1, 'b': {'c': 1}} == dict1, 'dict copy 3 error'
assert {'a': 1, 'b': {'c': 1, 'd': 2}} == dict2, 'dict copy 3.1 error'

pass

6.dict的各种初始化

def test_6():
# 方法:dict(p)

dict1 = {}
assert {} == dict1, 'dict new 1 error'

dict1 = dict()
assert {} == dict1, 'dict new 2 error'

dict1 = dict({'a': 1})
assert {'a': 1} == dict1, 'dict new 3 error'

dict1 = dict([('a', 1), ('b', 2)])
assert {'a': 1, 'b': 2} == dict1, 'dict new 4 error'

dict1 = dict(a=1, b=2)
assert {'a': 1, 'b': 2} == dict1, 'dict new 5 error'

params = {'a': 1, 'b': 2}
dict1 = dict(**params)
assert {'a': 1, 'b': 2} == dict1, 'dict new 6 error'
pass



审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • python
    +关注

    关注

    57

    文章

    4857

    浏览量

    89581
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    一文了解Mojo编程语言

    资源受限环境,如物联网设备或实时控制系统。 总的来说,Mojo 的独特之处在于它填补了 Python 与底层语言之间的性能鸿沟,同时保持了开发者熟悉的语法和生态。随着其工具链的完善,Mojo 有望成为 AI 和高性能计算领域的重要工具。
    发表于 11-07 05:59

    示例3x3矩阵求和

    软件通过自定义汇编语言利用riscv指令与nice接口交互。 Risc-v指令的功能在Verilog文件中得到定义。在C语言中,使用自定义汇编语言操控使用这些指令。 所定义的指令一共有三个
    发表于 10-30 06:25

    中宇联成功入围中国电信广东公司DICT项目合作伙伴

    广东公司DICT生态合作阵营,将携手助力政企信息化领域的数字化转型与创新发展。此次中国电信广东公司DICT合作伙伴招募,以“落实电信集团DICT建设战略、扩大DI
    的头像 发表于 09-19 09:43 1232次阅读
    中宇联成功入围中国电信广东公司<b class='flag-5'>DICT</b>项目合作伙伴

    canopen如何通过对象字典控制外设?

    各位大佬好,我在移植canopen的时候碰到一个疑问。比如我修改对象字典2000,子索引为0这个目录下的值,如何这个对象映射的是某个led灯的亮灭,输入1为亮,0为灭。 问题就是我发送报文之后会进入
    发表于 09-11 06:04

    termux调试python猜数字游戏

    用termux做一个猜数字游戏 下面是在Termux中创建猜数字游戏的步骤及完整实现方案,结合Python实现(最适配Termux环境): ? 一、环境准备(Termux基础配置) 1.
    发表于 08-29 17:15

    C++ 与 Python:树莓派上哪种语言更优?

    Python是树莓派上的首选编程语言,我们的大部分教程都使用它。然而,C++在物联网项目中同样广受欢迎且功能强大。那么,在树莓派项目中选择哪种语言更合适呢?Python因其简洁性、丰富
    的头像 发表于 07-24 15:32 642次阅读
    C++ 与 <b class='flag-5'>Python</b>:树莓派上哪种<b class='flag-5'>语言</b>更优?

    Modbus和MQTT协议

    Modbus和MQTT协议在设计目标、通信模式、应用场景、网络结构、数据传输效率、设备兼容性及安全性等方面存在显著差异,具体分析如下: 一、设计目标与定位 Modbus :诞生于1979年,由施耐德公司开发,最初为串行通信(RS232/RS485)设计。其目标是解决工业设备(如PLC、传感器、仪表)之间的短距离、点对点或小范围组网通信,核心是设备间直接的数据读写控制。Modbus属于工业现场总线协议,侧重底层设备的高效数据交互。 MQTT :2013年由OASIS标准化,最初
    的头像 发表于 07-10 14:25 481次阅读

    Modbus与MQTT的区别

    Modbus和MQTT是工业领域中两种不同的通信协议,在设计目标、应用场景、通信模式等方面存在显著差异,以下从多个维度两者的区别: 1.设计目标与起源 Modbus 诞生于1979年,由施耐德
    的头像 发表于 07-10 14:10 693次阅读

    跟老齐学Python:从入门到精通

    础的学习者介绍一门时下比较流行、并且用途比较广泛的编程语言,所以,本书读起来不晦涩,并且在其中穿插了很多貌似与Python 编程无关,但与学习者未来程序员职业生涯有关的内容。 获取完整文档资料可下载附件哦!!!! 如果内容有帮助可以关注、点赞、评论支持一下哦~
    发表于 06-03 16:10

    python入门圣经-高清电子书(建议下载)

    和Pygal 等强大的Python 库和工具介绍,以及列表、字典、if 语句、类、文件与异常、代码测试等内容; 第二部分将理论付诸实践,讲解如何开发三个项目,包括简单的Python 2D 游戏开发如何利用数据
    发表于 04-10 16:53

    零基础入门:如何在树莓派上编写和运行Python程序?

    是一种非常有用的编程语言,其语法易于阅读,允许程序员使用比汇编、C或Java等语言更少的代码行。Python编程语言最初实际上是作为Linux的脚本
    的头像 发表于 03-25 09:27 1524次阅读
    零基础入门:如何在树莓派上编写和运行<b class='flag-5'>Python</b>程序?

    Python在嵌入式系统中的应用场景

    你想把你的职业生涯提升到一个新的水平?Python在嵌入式系统中正在成为一股不可缺少的新力量。尽管传统上嵌入式开发更多地依赖于C和C++语言Python的优势在于其简洁的语法、丰富的库和快速的开发周期,这使得它在某些嵌入式场景
    的头像 发表于 03-19 14:10 1190次阅读

    使用Python实现xgboost教程

    使用Python实现XGBoost模型通常涉及以下几个步骤:数据准备、模型训练、模型评估和模型预测。以下是一个详细的教程,指导你如何在Python中使用XGBoost。 1. 安装XGBoost
    的头像 发表于 01-19 11:21 2214次阅读

    gitee 支持的编程语言有哪些

    Gitee 支持的常见编程语言Python :一种广泛使用的高级编程语言,以其清晰的语法和代码可读性而闻名。 Java :一种面向对象的编程语言,被广泛用于企业级应用开发。 C+
    的头像 发表于 01-06 09:50 1107次阅读

    Triton编译器支持的编程语言

    Triton编译器支持的编程语言主要包括以下几种: 一、主要编程语言 Python :Triton编译器通过Python接口提供了对Triton语言
    的头像 发表于 12-24 17:33 1456次阅读