PYTHON知识点学习-字典

简介: PYTHON知识点学习-字典

字典的介绍及创建

字典:是存储键值对的数据

键(key)

值(value)

根据 key 能够快速找到 value  ( 映射关系 )

例如: 学号 => 同学        名字 => 人

在 python 的字典中,可以同时包含佷多个键值对.

同时要求这些键,不能重复!

#1.创建字典
a = {}
print(type(a))
b = dict()
print(type(b))
#2.创建字典的同时设置初始值.
a ={"id":1 , "name" : "zhangsan"}

字典a中,包含两个键值对.

(1)"id":1  key 就是"id",value 就是 1

(2)"name":  "zhangsan"  key 就是"name", value 就是"zhangsan"

一个字典中的  key  的类型 不一定都一样

一个字典中的  value  的类型  也不必都一样~

综上,key 和 value 对类型无约束

a ={
    "id":1 ,
    "name" : "zhangsan",
    }

最后一个键值对的逗号可写可不写,其它的必须加上逗号.

字典查找key

#1. 使用 in 来判定某个 key 是否在字典中存在.
a ={
    "id":1,
    "name":"zhangsan"
}
print("id" in a)
print("classId" in a)
# in 只是判定 key 是否存在, 和 value 无关!
print("zhangsan" in a)
# not in 来判定 key 在字典中不存在
print("id" not in a)
print("classId" not in a)
# 运行结果:
# True
# False
# False
# False
# True
#2. 使用 [ ] 来根据 key 获取到 value
a ={
    "id" : 1,
    "name" : "zhangsan",
    100 : "list"
}
print(a["id"])
print(a["name"])
print(a[100])     #注意这里表示的是key100
print(a["classId"])
# # 运行结果:
# 1
# zhangsan
# list
# # KeyError: 'classId'#因为找不到

在 Python 中,可以通过多层索引来查找嵌套字典中最里面的值

举个例子,假设有以下嵌套字典

my_dict = {
    'name': 'John',
    'age': 30,
    'contacts': {
        'email': 'john@example.com',
        'phone': {
            'mobile': '123-456-7890',
            'home': '098-765-4321'
        }
    }
}

要查找最里面的电话号码,可以使用以下代码:

phone_number = my_dict['contacts']['phone']['mobile']
print(phone_number)  # 输出: '123-456-7890'

另外,如果不确定某个键是否存在,可以使用 get 方法来避免出错

phone_number = my_dict.get('contacts', {}).get('phone', {}).get('mobile')
print(phone_number)  # 输出: '123-456-7890'

如果某一层嵌套字典不存在,那么 get 方法就会返回一个空字典 {},这样就可以继续向下查找了。

dictionary&list对比

字典的新增修改删除

#1.在字典中新增元素,使用[ ] 来进行.
a = {
    "id" : 1,
    "name" : "zhangsan",
}
# 这个操作就是往字典里插入新的键值对.
a["score"] = 90
print(a)
#2. 在字典中, 根据 key 修改 value, 也是使用 [ ]来进行的~
a["score"] = 100
print(a)
#3. 使用 pop 方法, 根据 key 来删除键值对~
a.pop("name")
print(a)
# 运行结果:
# {'id': 1, 'name': 'zhangsan', 'score': 90}
# {'id': 1, 'name': 'zhangsan', 'score': 100}
# {'id': 1, 'score': 100}

可以通过Python中的 update() 方法替换字典中的键值对。该方法接收一个字典作为参数,将该字典中的键值对替换到原字典中对应的键上。

以下是一个简单的示例代码:

dict1 = {"a": 1, "b": 2, "c": 3}
dict2 = {"b": 4, "d": 5}
dict1.update(dict2)
print(dict1)

输出结果为:

{'a': 1, 'b': 4, 'c': 3, 'd': 5}

可以看到,字典dict2中的键值对已经被替换到了dict1中对应的键上,同时新增的键值对也被添加到了dict1中。如果键已经存在,则新值将取代旧值

小结:字典的各种操作,都是针对 key 来进行的!!
       从而,新增,删除, 获取value,修改value.....

理解字典操作的效率

遍历指的是:能够把一个可迭代对象,里面包含的元素依次取出,并进行一些操作.整个过程要求不重不漏.

字典被设计出来的初衷,不是为了遍历,而是为了增删查改.

字典是 哈希表,进行增删改查操作,效率度非常高!!

字典遍历效率就要一些.

哈希表 这个结构被设计的非常巧妙,能够以"常数级"时间复杂度来完成增删改查~

"常数级":无论字典中有多少元素~

新增,修改,查找 操作都是固定时间,不会因为元素多了,操作就慢了~

❗❗❗哈希表非常重要,后面会继续深入学习发博文

字典的遍历

#1 直接使用 for 循环来遍历字典
a = {
    "id": 1,
    "name":"zhangsan",
    "score":90,
}
for key in a:
    print(key,a[key])
# 运行结果:
# id 1
# name zhangsan
# score 90

在C++ 或者 Java 中,哈希表里储存的键值对是无序的!

但在 Python 中还不一样~

Python 中做了特殊处理~~能够保证 遍历出来的顺序 和 插入进来的顺序相同~~

Python中的字典,不是单纯的一个哈希表

keys 获取字典中的所有 key

values 获取字典中的所有value

items 获取字典中的所有键值对~

a = {
    "id": 1,
    "name":"zhangsan",
    "score":90,
}
print(a.keys())
print(a.values())
print(a.items())
# 运行结果:
# dict_keys(['id', 'name', 'score'])
# dict_values([1, 'zhangsan', 90])
# dict_items([('id', 1), ('name', 'zhangsan'), ('score', 90)])

keys 和 values 返回的结果,看起来像列表,又不完全是~~

自定义类型~~

使用的时候也可以把它当作列表来使用~~

items返回的 首先是一个列表一样的结构,里面每个元素又是一个元组,元组里面包含了键和值.

so 可以利用类似于自定义读取利用for方法去读取它的值一样去遍历取出,如下:

a = {
    "id": 1,
    "name":"zhangsan",
    "score":90,
}
for key,value in a.items():
    print(key,value)
    # 运行结果:
    # id 1
    # name zhangsan
    # score 90

可哈希的类型

哈希的概念

哈希技术是一种单向加密技术,也就是说,它可以将任何长度的原始消息转换成一个特定长度的哈希值,但无法从哈希值反推出原始消息。

哈希函数通常具有以下特点

- 压缩性:无论输入消息的长度多长,产生的哈希值长度固定。

- 易计算性:计算哈希值的操作很容易,即使处理的数据量很大。

- 抗碰撞性:难以找到两个不同的输入消息,其哈希值相同,也称为“哈希冲突”。

哈希技术近年来在越来越多的领域中得到了广泛的应用,比如密码学中的数字签名、身份认证、密码存储等,还有数据完整性校验、指纹识别、电子商务中的信任机制等

在 python 里专门提供了一个 hash 函数~

print(hash(0))
print(hash(3.14))
print(hash("hello"))
print(hash(True))
# # 运行结果:
# 0
# 322818021289917443
# -5961696303172855508
# 1

通过上面代码运行结果可知:整数,浮点数,字符串,布尔值,元组以计算哈希值.--->可作为key

# 有的类型是不能计算哈希值的.
print(hash([1,2,3]))
# 运行结果:
# TypeError: unhashable type: 'list'
print(hash({}))
# # 运行结果:
# # TypeError: unhashable type: 'dict'

通过上面代码运行结果可知,列表,字典,不可以哈希.

summary:不可变(整数,浮点数,字符串,布尔值,元组)的对象可哈希,

              可变(字典,列表)的对象不可哈希

                字典,列表,元组 在python中是非常常用的 内置类型~

                相比于 int, str, float...

                它们内部可以再包含其它元素~

                它们属于 容器/集合类~

🍒字典的知识点就分享到这里啦~🍒

🍒喜欢就一键三连支持一下吧~🍒

🍒谢谢家人们!🍒

目录
相关文章
|
11月前
|
存储 JavaScript Java
(Python基础)新时代语言!一起学习Python吧!(四):dict字典和set类型;切片类型、列表生成式;map和reduce迭代器;filter过滤函数、sorted排序函数;lambda函数
dict字典 Python内置了字典:dict的支持,dict全称dictionary,在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度。 我们可以通过声明JS对象一样的方式声明dict
566 2
|
11月前
|
存储 Java 数据处理
(numpy)Python做数据处理必备框架!(一):认识numpy;从概念层面开始学习ndarray数组:形状、数组转置、数值范围、矩阵...
Numpy是什么? numpy是Python中科学计算的基础包。 它是一个Python库,提供多维数组对象、各种派生对象(例如掩码数组和矩阵)以及用于对数组进行快速操作的各种方法,包括数学、逻辑、形状操作、排序、选择、I/0 、离散傅里叶变换、基本线性代数、基本统计运算、随机模拟等等。 Numpy能做什么? numpy的部分功能如下: ndarray,一个具有矢量算术运算和复杂广播能力的快速且节省空间的多维数组 用于对整组数据进行快速运算的标准数学函数(无需编写循环)。 用于读写磁盘数据的工具以及用于操作内存映射文件的工具。 线性代数、随机数生成以及傅里叶变换功能。 用于集成由C、C++
795 1
|
11月前
|
算法 Java Docker
(Python基础)新时代语言!一起学习Python吧!(三):IF条件判断和match匹配;Python中的循环:for...in、while循环;循环操作关键字;Python函数使用方法
IF 条件判断 使用if语句,对条件进行判断 true则执行代码块缩进语句 false则不执行代码块缩进语句,如果有else 或 elif 则进入相应的规则中执行
1727 1
|
安全 数据安全/隐私保护 Python
Python学习的自我理解和想法(27)
本文记录了学习Python第27天的内容,主要介绍了使用Python操作PPTX和PDF的技巧。其中包括通过`python-pptx`库创建PPTX文件的详细步骤,如创建幻灯片对象、选择母版布局、编辑标题与副标题、添加文本框和图片,以及保存文件。此外,还讲解了如何利用`PyPDF2`库为PDF文件加密,涵盖安装库、定义函数、读取文件、设置密码及保存加密文件的过程。文章总结了Python在处理文档时的强大功能,并表达了对读者应用这些技能的期待。
|
11月前
|
存储 Java 索引
(Python基础)新时代语言!一起学习Python吧!(二):字符编码由来;Python字符串、字符串格式化;list集合和tuple元组区别
字符编码 我们要清楚,计算机最开始的表达都是由二进制而来 我们要想通过二进制来表示我们熟知的字符看看以下的变化 例如: 1 的二进制编码为 0000 0001 我们通过A这个字符,让其在计算机内部存储(现如今,A 字符在地址通常表示为65) 现在拿A举例: 在计算机内部 A字符,它本身表示为 65这个数,在计算机底层会转为二进制码 也意味着A字符在底层表示为 1000001 通过这样的字符表示进行转换,逐步发展为拥有127个字符的编码存储到计算机中,这个编码表也被称为ASCII编码。 但随时代变迁,ASCII编码逐渐暴露短板,全球有上百种语言,光是ASCII编码并不能够满足需求
432 4
|
算法 IDE 测试技术
python学习需要注意的事项
python学习需要注意的事项
583 57
|
12月前
|
JavaScript Java 大数据
基于python的网络课程在线学习交流系统
本研究聚焦网络课程在线学习交流系统,从社会、技术、教育三方面探讨其发展背景与意义。系统借助Java、Spring Boot、MySQL、Vue等技术实现,融合云计算、大数据与人工智能,推动教育公平与教学模式创新,具有重要理论价值与实践意义。
|
12月前
|
存储 JSON 数据管理
Python字典:高效数据管理的瑞士军刀
Python字典基于哈希表实现,提供接近O(1)的高效查找,支持增删改查、遍历、合并等丰富操作,广泛应用于计数、缓存、配置管理及JSON处理。其灵活性与性能使其成为数据处理的核心工具。
852 0
|
JSON 数据安全/隐私保护 数据格式
拼多多批量下单软件,拼多多无限账号下单软件,python框架仅供学习参考
完整的拼多多自动化下单框架,包含登录、搜索商品、获取商品列表、下单等功能。

推荐镜像

更多