字典的学习笔记

news2024/11/27 12:30:17

  • 列表  []     单身
  • 什么是字典  {}  二人世界

python内置的数据结构之一,与列表一样是一个可变序列(可以增删改操作的)
以键值对的方式存储数据,字典是一个无序的序列  -> hash(key)  通过哈希函数来计算存储位置,key一定是不可变的
字典的创建
使用花括号:  score={'张三':100,'李四':98,'王五':55}
第二种创建方式:使用内置函数   dict()
 


print('使用花括号创建')
score = {'张三': 100, '李四': 98, '王五': 55}
print(score, id(score))
print(type(score))
print('第二种创建方式:使用内置函数')
student = dict(name='liu', age=34)
print(student)
'''空字典'''
dit = {}
print(dit, type(dit))

print('=========获取字典中的值=======')
print('使用花括号创建')
score = {'张三': 100, '李四': 98, '王五': 55}

print(score['张三'])
# print(score['张1']) #如果查找的键不存在 会报错,KeyError: '张1'
print(score.get('张三'))
print(score.get('张1'))  # None  ,如果查找的键不存在
print(score.get('张1', 99))  # 如果查找的键张1不存在,给返回一个默认值

print('=======key的判断========')
print('张三' in score)
print('张三' not in score)

del score['张三']  # 删除指定的key-value对
print(score, id(score))
# score.clear()
print(score, id(score))
score['程力'] = 93
print(score)
score['程力'] = 95
print(score)

print('======获取所有的key========')
score = {'张三': 100, '李四': 98, '王五': 55}
keys = score.keys()
print(keys)  # dict_keys(['张三', '李四', '王五'])
print(type(keys))  # <class 'dict_keys'>
print(list(keys))  # ['张三', '李四', '王五'] 将所有建组成的视图转成列表

print('======获取所有的value========')
values = score.values()
print(values)  # dict_values([100, 98, 55])
print(type(values))  # <class 'dict_values'>
print(list(values))

print('======获取所有的key-value对========')
items = score.items()
print(items)  # dict_items([('张三', 100), ('李四', 98), ('王五', 55)]) ,转换之后的元素由元组组成-》 元组()

print('字典元素的遍历')
for i in score:
    print(i)  # 输出所有的列表中所有的键 key
    print(score[i], score.get(i))  # 获取键对应的值
print('字典元素的key不允许重复')
d = {'name': '张三', 'name': '李四'}  # key不允许重复,一旦重复出现值覆盖的情况
print(d)  # {'name': '李四'}

d = {'name': '张三', 'nick_name': '张三'}
print(d)

lst = [1, 2, 3, 4]
lst.insert(1, 100)
print(lst)

# d = {lst: 100}
# print(d)  # 可变对象不可以作为key  TypeError: unhashable type: 'list'

print('====================')

items = ['Fruits', 'books', 'Others']
prices = [85, 23, 52]
d = {i: prices for i, prices in zip(items, prices)}
print(d)

items = ['Fruits', 'books', 'Others']
prices = [85, 23, 52,30,40] #更长5个元素,但是只有前3个元素有效
d = {i: prices for i, prices in zip(items, prices)}#以元素少的那个列表来生成
print(d)

lst = ['张三', '李四', '王五']
score = [12, 23, 34, 45, 56]
item = zip(lst, score)
print(item)  # <zip object at 0x000001A9FAC29408>
print('=================')
print(list(item))  # [('张三', 12), ('李四', 23), ('王五', 34)]

lst = ['Fruits', 'Books', 'Carrit']
dit = {i.upper(): score for i, score in zip(lst, score)}
print(type(dit)) #<class 'dict'>
print(dit)    #{'FRUITS': 12, 'BOOKS': 23, 'CARRIT': 34}

下面为扩展阅读:

1. 直接创建空字典

dic = {}
print(type(dic))
# 输出结果:<class 'dict'>

2. 直接赋值创建字典

dic = {'name': 'Jack', 'age': 18, 'height': 180}
print(dic)
# 输出结果:{'name': 'Jack', 'age': 18, 'height': 180}

3. 通过关键字dict和关键字参数创建

dic = dict(name='Jack', age=18, height=180)
print(dic)
# 输出结果:{'name': 'Jack', 'age': 18, 'height': 180}

实例:

       •输出一个类似{ i : i*i }的字典

dic = dict()
for i in range(1, 5):
    dic[i] = i * i
print(dic)
# 输出结果:{1: 1, 2: 4, 3: 9, 4: 16}

4. 通过关键字dict和二元组列表创建

lis = [('name', 'Jack'), ('age', 18), ('height', 180)]
dic = dict(lis)
print(dic)
# 输出结果:{'name': 'Jack', 'age': 18, 'height': 180}

5. 通过关键字dict和zip创建

dic = dict(zip('abc', [1, 2, 3]))
print(dic)
# 输出结果:{'a': 1, 'b': 2, 'c': 3}

 6. 通过字典推导式创建

dic = {i: i ** 2 for i in range(1, 5)}
print(dic)
# 输出结果:{1: 1, 2: 4, 3: 9, 4: 16}

 7. 通过dict.fromkeys()创建

注意:通常用来初始化字典, 设置value的默认值

dic = dict.fromkeys(range(4), 'x')
print(dic)
# 输出结果:{0: 'x', 1: 'x', 2: 'x', 3: 'x'}


参考链接:https://blog.csdn.net/qq_45261963/article/details/108936881

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

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

相关文章

读论文-MHFormer

论文&#xff1a;Multi-hypothesis representation learning for transformer-based 3D human pose estimation 摘要 尽管取得了重大进展&#xff0c;但由于深度模糊和自遮挡&#xff0c;从单目视频中估计3D人体姿势仍然是一项具有挑战性的任务。大多数现有的作品都试图通过利用…

驱动程序接口和HAL层区别和联系

驱动程序接口&#xff08;Device Driver Interface&#xff09;和硬件抽象层&#xff08;Hardware Abstraction Layer&#xff0c;HAL&#xff09;是在软件系统中用于处理硬件的两个不同层次的概念。 驱动程序接口&#xff08;Device Driver Interface&#xff09;&#xff1a;…

设计模式(二、三):创建型之工厂方法和抽象工厂模式

设计模式系列文章 设计模式(一)&#xff1a;创建型之单例模式 设计模式(二、三)&#xff1a;创建型之工厂方法和抽象工厂模式 设计模式(四)&#xff1a;创建型之原型模式 设计模式(五)&#xff1a;创建型之建造者模式 设计模式(六)&#xff1a;结构型之代理模式 目录 一、…

校园综合能效平台建设的意义

摘 要&#xff1a;为响应国家绿色校园建设的号召&#xff0c;切实提高高校能源利用水平&#xff0c;促进学校能源资源合理配置&#xff0c;服务学校高质量发展大局&#xff0c;根据教育部印发的《关于开展节能减排学校行动的通知》《关于勤俭节约办教育建设节约型校园的通知》…

Linux内核超级装备eBPF技术详细研究

定义一&#xff08;http://ebpf.io的定义&#xff09; eBPF (which is no longer an acronym for anything) is a revolutionary technology with origins in the Linux kernel that can run sandboxed programs in a privileged context such as the operating system kernel.…

物联网通信之串口服务器,RS485/RS232双串口并行、远程虚拟串口调试

随着现代工业信息技术发展&#xff0c;串口服务器在工业应用中越来越常见&#xff0c;那么什么是串口服务器呢&#xff0c;今天智联物联小编就与大家分享一下物联网通信中的串口服务器。 为帮助大家理解&#xff0c;智联物联小编从串口服务器的接口为大家开始讲解&#xff0c;一…

高分子PEG:mPEG-Maleimide MW:3400,甲氧基-聚乙二醇—马来酰亚胺,常用作聚合物试剂

【产品描述】 陕西新研博美生物科技有限公司供应的​mPEG-Maleimide属于高分子PEG&#xff0c;马来酰亚胺和巯基的偶合是蛋白和多肽偶联中的一个非常有用的反应。mPEG-MAL被用来合成具有确定结构和生物活性的PEG-蛋白质偶合物。mPEG-MAL也常用作聚合物试剂来选择性诱捕含巯基的…

易基因:小檗碱通过介导m6A mRNA甲基化调控斑马鱼肝细胞氧化应激、凋亡和自噬|科研进展

大家好&#xff0c;这里是专注表观组学十余年&#xff0c;领跑多组学科研服务的易基因。 中药小檗碱&#xff08;Berberine&#xff0c;BBR&#xff0c;化学式C20H18NO4&#xff09;是从几种药用植物中分离出的一种异喹啉季生物碱&#xff0c;包括小檗&#xff08;Berberis ar…

让你不再好奇怎样同声传译

众所周知&#xff0c;同声传译技术在国际交流和商务领域发挥着重要的作用&#xff0c;它能够帮助人们跨越语言障碍&#xff0c;促进人们之间的有效沟通。那么&#xff0c;你知道如何同声传译吗&#xff1f;接下来我将教你三个方法&#xff0c;帮助你更好的进行同声传译操作。 方…

springboot+vue餐厅点餐系统在线点餐系统(含源码+数据库)

1.系统分析 系统用例图如下所示。 从用户、餐厅等方面进行需求分析如下。 1.用户需求&#xff1a;系统应该提供简单易用的用户界面&#xff0c;用户可以浏览餐厅菜单&#xff0c;选择菜品&#xff0c;下订单。此外&#xff0c;应该允许用户管理个人信息和查看历史订单。 2.餐…

SQL-多表查询-事务

SQL-多表查询-事务 多表查询顾名思义就是从多张表中一次性的查询出我们想要的数据 前期表准备 DROP TABLE IF EXISTS emp; DROP TABLE IF EXISTS dept;# 创建部门表CREATE TABLE dept(did INT PRIMARY KEY AUTO_INCREMENT,dname VARCHAR(20));# 创建员工表CREATE TABLE emp (i…

一文3000字从0到1用Python做安全测试攻击实战(建议收藏)

在本文中&#xff0c;我们将使用Python进行一次安全测试的实战演练&#xff0c;目标是找出并利用应用程序的安全漏洞。请注意&#xff0c;这个演练仅用于教育和研究目的&#xff0c;切勿将这些技术用于非法活动。 注意&#xff1a;未经授权的攻击是违法的。确保你在拥有明确权…

准实时刷新集群中各节点本地缓存的解决方案

目录 背景 Redis发布订阅 MQ广播消息 配置中心Nacos&#xff0c;Zookeeper监听 注册中心获取服务节点ip端口接口调用 本地定时任务兜底 背景 我们在系统开发过程中&#xff0c;为了减少数据库和redis缓存的查询以提升接口性能&#xff0c;有时候会把一些常用的、变动不是…

[数据结构 -- C语言] 堆实现Top-K问题,原来王者荣耀的排名是这样实现的,又涨知识了

目录 1、什么是Top-K问题&#xff1f; 1.1 Top-K基本思路 2、Top-K问题逻辑分析 2.1 建堆&#xff0c;大小为K的小堆 2.2 将剩余的N - K 个元素依次与堆顶元素比较&#xff0c;大于就替换 2.3 打印堆 3、TopK实现代码 4、Top-K问题完整代码 结果展示&#xff1a; TopK…

做IT运维的,哪有人不疯的

网飞最新的剧集《怒呛人生》大受欢迎的一大原因就是&#xff1a;发疯。 在2023年&#xff0c;发疯已经从一种人身攻击&#xff0c;拯救语言匮乏的恶评转移成一个中性词&#xff0c;在某些语境下&#xff0c;等同于冒犯、破罐子破摔。连快乐都不敢的东亚人&#xff0c;为啥发疯…

C++:智能指针

目录 一. 智能指针的概念及原理 1.1 什么是智能指针 1.2 智能指针的原理 二. 智能指针的拷贝问题 三. auto_ptr 3.1 auto_ptr的拷贝构造和赋值问题 3.2 auto_ptr的模拟实现 四. unique_ptr 五. shared_ptr 5.1 shared_ptr的常用接口 5.2 shared_ptr的拷贝构造和赋值…

软件工程导论(四)软件编码测试与维护

一、软件编程 1.1良好的编程习惯 变量命名有意义并且使用统一的命名规则 编写自文档代码&#xff08;序言性注释 or 行内注释&#xff09; 提前进行可维护性考量&#xff08;可以用常量的方式存在的数值最好以变量的方式存在&#xff09; 良好的视觉安排可以提高代码的可读性(…

ChatGPT训练一次要耗多少电?

如果开个玩笑&#xff1a;问ChatGPT最大的贡献是什么&#xff1f; “我觉得它对全球变暖是有一定贡献的。”知名自然语言处理专家、计算机科学家吴军在4月接受某媒体采访时如是说。 随着ChatGPT引爆AIGC&#xff0c;国内外巨头纷纷推出自己的AI大模型&#xff0c;大家为人工智…

2023 开放原子全球开源峰会“开发者之夜”高能剧透!

开发者之夜~即将高燃启动 最潮&#xff01;最嗨&#xff01;最青春&#xff01; 肆意&#xff01;亲切&#xff01;嗨 FUN 派&#xff01; 这是一场面向开发者的线下狂欢&#xff01; 也是一场精心准备的答谢盛宴&#xff01; 更是一场开源圈的老友聚会&#xff01; 开发者之夜…

IP地址中的子网掩码和CIDR

将常规的子网掩码转换为二进制&#xff0c;将发现子网掩格式为连续的二进制1跟连续0&#xff0c;其中子网掩码中为1的部分表示网络ID&#xff0c;子网掩中为0的表示主机ID。比如255.255.0.0转换为二进制为11111111 11111111 00000000 00000000。 ​ 在前面所举的例子中为什么不…