大数据学习路线 学习笔记 Day6
承接上一篇Day5的数据容器篇
一、dict字典
dict字典全称dictionary,在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度。
字典的创建使用大括号 {} 包含键值对,并用冒号 : 分隔键和值,形成 键:值 对
# 创建一个dict字典
dict1={'k1':'v1','k2':'v2','k3':'v3'}
print(dict1)
print(type(dict1))

特点:无序、可变、每一个元素都是K V键值对格式,value的类型没有限制,key必须是唯一的且不可变,用于需要快速查询的场景
注意:字典的key值必须是不可变数据类型,数值,字符串,元组。列表之类的可变数据类型不可作为key值!!!!!!
dict1={'k1':'v1','k2':'v2','k3':'v3'}
dict1['k4']='v4'
print(dict1)
print(dict1[1])

dict字典中的K V键值对可以动态增减,用下标也无法查询到元素,证明dict字典是无序的。
为什么dict查找速度这么快?
*因为dict的实现原理和查字典是一样的。
假设字典包含了1万个汉字,需要再其中查询某一个字.
第一种方式是把字典从第一页往后翻,直到找到所需的字为止,这种方法就是在list中查找元素的方法,list越大,查找越慢。
第二种方法是先在字典的索引表里(比如部首表)查这个字对应的页码,然后直接翻到该页,找到这个字。无论找哪个字,这种查找速度都非常快,不会随着字典大小的增加而变慢,dict字典就是该种方式。
dict字典中常见的方法:
| 方法 | 作用 |
|---|---|
| get | 通过key获取value,当key不存在时,返回一个默认值(可指定,不指定则为None) |
| pop | 通过key删除kv键值对, 当key不存在时 必须设置默认值 |
| keys | 返回所有的key值,返回形式是一种特殊的列表 |
| values | 返回所有的value值,返回形式是一种特殊的列表 |
| items | 同上,但是将每个KV键值对转换成二元组并返回,一般用于遍历 |
| clear | 清空字典 |
增改操作示例:
# 增加元素/修改元素
dict1={'k1':'v1','k2':'v2','k3':'v3'}
dict1['k4']='v4'
print(dict1)
dict1['k3']='vv3'
print(dict1)
# 可以通过修改的方式进行增加,如果key已经存在则覆盖,不存在则添加

查询操作示例:
# 查询元素
dict1={'k1':'v1','k2':'v2','k3':'v3'}
print(dict1.get('k1'))
print(dict1.get('k5')) #key值不存在时,返回默认值,默认值为None
print(dict1.get('k5','指定的默认值')) #key值不存在时,还可以返回指定的默认值
print(dict1.keys())
print(type(dict1.keys())) #直接使用dict.keys(),那么返回值为dict_keys(视图对象)
print(list(dict1.keys())) #若要返回列表值还需调用list函数。
print(dict1.values())
print(type(dict1.values())) #同keys方法,返回一个动态视图对象dict_values
print(list(dict1.values())) #同keys方法
print(dict1.items())
print(type(dict1.items())) #同keys values方法,主要用于遍历
print(list(dict1.items()))

这里需要注意的是:
1.字典的keys、values、items三个方法很类似,一般都用于遍历字典。
dict.keys()、dict.values()、dict.items()直接返回的都是视图对象,提供了字典实体的动态视图,这就意味着字典改变,视图也会跟着变化。视图对象不是列表,不支持索引,但是可以使用 list() 函数来转换为列表。我们不能对视图对象进行任何的修改,因为字典的视图对象都是只读的。
(简单理解即可,可以理解为这三种方法返回的是一种特殊的,动态的列表,可以直接用于遍历,但是不支持索引,可以使用list()函数转换为常用的列表形式)
关于遍历字典的方法,参考我的另一篇博客:
大数据学习路线 学习笔记 Day4
2.list()函数:
list()函数是Python的内置函数。它可以将任何可迭代数据转换为列表类型,并返回转换后的列表。当参数为空时,list函数可以创建一个空列表。
删除操作示例:
# 删除元素
dict1={'k1':'v1','k2':'v2','k3':'v3'}
print(dict1.pop('k3')) #删除指定KV键值对,同时返回相应value值
print(dict1) #作用在dict本身上
# 使用pop方法必须指定key进行移除,否则直接报错
print(dict1.pop('k5','指定默认值'))
# 当key不存在时,需要设置默认值 否则直接报错
dict1.clear()
print(dict1) #clear方法清空字典

注意pop方法与get方法的类似与不同之处:
类似:都返回相应的value值
不同:当key值不存在时,get方法不指定默认值返回None,指定则返回指定的默认值;
pop方法不指定默认值直接报错,所以必须指定默认值。
补充说明:
前面只提到了修改value的方法,此处再补充一个修改key的方法。key不能直接修改,需要删除再添加。
# dict中无法直接修改key,可以先删除kv键值对,再重新添加
dict1={'k1':'v1','k2':'v2','k3':'v3'}
del dict1['k2']
print(dict1) #使用del 关键字删除KV键值对
dict1['kk2']='v2'
print(dict1) #重新添加’kk2‘键值,达到修改key的目的
print('k1' in dict1)
print('kk1' in dict1) # 使用 in 的方法可以查询某个键值是否在字典内

使用 in 的方法可以查询某个键值是否在字典内
本文介绍了Python中的dict字典数据结构,包括创建、特点、查找速度的优势、常用方法如get、pop、keys、values、items以及增删改查操作。字典是无序、可变的,使用键值对存储,其查找速度快得益于内部的哈希表机制。此外,文章还讨论了如何通过视图对象进行遍历以及如何修改字典的键值。
1328

被折叠的 条评论
为什么被折叠?



