大数据学习路线 学习笔记 Day6

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

大数据学习路线 学习笔记 Day6

承接上一篇Day5的数据容器篇

一、dict字典

dict字典全称dictionary,在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度
字典的
创建
使用大括号 {} 包含键值对,并用冒号 : 分隔键和值,形成 键:值 对

# 创建一个dict字典
dict1={'k1':'v1','k2':'v2','k3':'v3'}
print(dict1)
print(type(dict1))

image.png
特点:无序、可变、每一个元素都是K V键值对格式,value的类型没有限制,key必须是唯一的且不可变,用于需要快速查询的场景
注意:字典的key值必须是不可变数据类型,数值,字符串,元组。列表之类的可变数据类型不可作为key值!!!!!!

dict1={'k1':'v1','k2':'v2','k3':'v3'}
dict1['k4']='v4'
print(dict1)
print(dict1[1])

image.png
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已经存在则覆盖,不存在则添加

image.png
查询操作示例:

# 查询元素
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()))

image.png
这里需要注意的是:
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方法清空字典

image.png
注意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   的方法可以查询某个键值是否在字典内

image.png
使用 in 的方法可以查询某个键值是否在字典内

第一部分 Spark学习 6 第1章 Spark介绍 7 1.1 Spark简介与发展 7 1.2 Spark特点 7 1.3 Spark与Hadoop集成 7 1.4 Spark组件 8 第2章 Spark弹性分布数据集 9 2.1 弹性分布式数据集 9 2.2 MapReduce数据分享效率低 9 2.3 MapReduce进行迭代操作 9 2.4 MapReduce进行交互操作 10 2.5 Spark RDD数据分享 10 2.6 Spark RDD 迭代操作 10 2.7 Spark RDD交互操作 10 第3章 Spark安装 11 第4章 Spark CORE编程 13 4.1 Spark Shell 13 4.2 RDD Transformations 13 4.3 Actions 16 4.4 用RDD编程 17 4.5 UN-Persist存储 18 第5章 Spark调度与高级编程 20 5.1 Spark应用程序例子 20 5.2 Spark-submit语法 22 5.3 Spark变量 23 5.4 数字类型 RDD操作 23 第二部分 ZOOKEEPER学习 24 第6章 zookeeper介绍 25 6.1 zookeeper简介 25 6.2 分布式应用程序 25 6.3 Apache Zookeeper意味着什么? 26 第7章 zookeeper基本组成与工作流程 27 第8章 zookeeper的leader节点选择 31 第9章 zookeeper安装 33 第10章 zookeeper 命令行接口 35 第11章 zookeeper应用程序接口 39 第12章 zookeeper应用 40 第三部分 KAFKA学习 48 第12章 KAFKA介绍 49 12.1 KAFKA简介 49 12.2信息系统 49 12.3 KAFKA是什么? 50 第13章 KAFKA基本组成与集群架构 51 13.1 KAFKA的基本组成 51 13.2 KAFKA集群架构 52 第14章 KAFKA工作流程 53 14.1 PUB-SUB信息工作流 53 14.2 队列信息工作流/消费者组 53 14.3 Zookeeper在KAFKA中扮演的角色 54 第15章 KAFKA安装 55 第16章 KAFKA基本操作 56 16.1 启动zookeeper服务 56 16.2 单个单节点中间件配置 56 16.3 Topics列表 56 16.4 启动生产者发送信息 57 16.5 启动消费者接收信息 57 16.6 单个多节点中间件配置 57 16.7 创建一个topic 58 16.8 启动生产者发送信息 59 16.9 启动消费者接收信息 59 16.10 基本Topic操作 59 16.11 删除Topic 59 第17章 KAFKA 生产者与消费者群实例 60 17.1 生产者实例 60 17.2 简单消费者实例 63 17.3 消费者群例子 65 第18章 KAFKA与SPARK集成 67 18.1 Kafka与spark集成 67 18.2 SparkConf API 67 18.3 StreamingContext API 67 18.4 KafkaUtils API 67 18.5 建立脚本 69 18.6 编译/打包 69 18.7 提交到Spark 69 第四部分HIVE学习 70 第19章 HIVE介绍 71 19.1 HIVE是什么? 71 19.2 HIVE特点 71 19.3 HIVE架构 71 19.5 HIVE工作流 72 第20章 HIVE 安装 74 20.1 Hadoop安装 74 20.2 HIVE安装 77 20.3 Derby安装与设置 78 第21章 HIVE 数据类型 80 21.1列类型(Column Type) 80 21.2文本类型(Literals) 81 21.3 Null 值 81 21.4 复杂类型 81 第22章 数据库操作 82 22.1 创建数据库 82 22.2 删除数据库 82 第23章 数据表操作 83 23.1 创建数据表 83 23.2 load数据(插入数据) 85 23.3 修改数据表(Alter table) 86 23.4 删除表(Drop table) 90 第24章 分区 92 24.1 添加分区(Adding a Partition) 93 24.2 重命名分区(Renaming a Partition) 93 24.3 删除分区(Droping a Partition) 93 第25章 内置运算符 94 25.1 关系运算符 94 25.2 算术运算符 96 25.3 逻辑运算符 97 25.4 复杂运算符(Complex Operators) 97 第26章 内置函数 98 26.1 内置函数 98 26.2 聚合函数(Aggregate Functions) 99 第27章 视图与索引 100 27.1 创建视图(Creating a View) 100 27.2 删除视图(Dropping a View) 100 27.3 创建索引(Creating an Index) 101 27.4 删除索引(Dropping an Index) 101 第28章 HIVEQL 102 28.1 查询语句(SELECT ...WHERE) 102 28.1.1 查询语句实例 102 28.1.2 JDBC查询语句实例 102 28.2 查询语句(SELECT...ORDER BY) 103 28.2.1 ORDER BY查询语句实例 103 28.2.2 JDBC ORDER BY 查询语句实例 104 28.3 查询语句(GROUP BY) 104 28.3.1 GROUP BY查询语句实例 104 28.3.2 JDBC GROUP BY查询语句实例 105 28.4 查询语句(JOIN) 106 28.4.1 JOIN查询语句实例 106
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值