python的基础知识梳理——字典、元组和集合

目录

一、字典

(1)字典的定义

(2)字典的特点

(3)字典的创建

(4)获取输出

(5)key的判断

 (6)字典的删除

 (7)字典的新增

(8) 清空

 (9) 字典视图的三个方法

(3)key() 获取字典里面所有的key

(2) Values()   获取字典中的所有Values

 (3) items()   获取字典中的所有的key和values对

  (4)字典的历遍

 (10) 内置函数zip()

 (10) 字典的基本原理(初学者可以忽略)

二、元组

 (1)元组的创建

俩种方法:(1)第一种通过()创建

(2)通过tuple()创建元组

(3)创建空元组 

(2)元组的元素访问

 (2)元组的元素是不能添加的,但是元素总若有列表,这可以像列表里面添加元素

三、集合

(1)主要的特点:

(2)集合的表示方法

(1)第一种直接定义

(2) 第二种使用内置函数set()定义

​编辑 (3)集合的相关操作

 (1)集合元素的判断

(2)集合元素的增加 

(1)add() 一次增加一个元素

(2)update()     至少增加一个元素

 (3)集合元素的删除

(1)remove()  一次删除一个指定的元素

 (2)pop()  一次随机删除一个元素

(3)清空集合

 (4)并集、交集、差集等运算。


一、字典

(1)字典的定义

字典是“键值对”的无序可变序列,字典中的每个元素都是一个“键值对”,包含:“键对象”和“值对象”。可以通过“键对象”实现快速获取、删除、更新对应的“值对象”。

列表中我们通过“下标数字”找到对应的对象。而字典中通过“键对象”找到对应的“值对象”。“键”是任意的不可变数据,比如:整数、浮点数、字符串、元组。但是:列表、字典、集合这些可变对象,不能作为“键”。并且“键”不可重复。

“值”可以是任意的数据,并且可重复。

一个典型的字典的定义方式:

a = {'name':'xiaoli','age':18,'job':'student'}

(2)字典的特点

  •  元素是无序的
  • key的值是不变的
  • 字典是可以动态伸缩
  • 浪费大内存,典型的空间换时间

(3)字典的创建

第一种方法:直接写

scores = {"张三":25,"李四":65,"王五":984}
print(scores)

结果为:{"张三":25,"李四":65,"王五":984}

第二种方法:使用内置函数dict()

scores = {"张三":25,"李四":65,"王五":984,}

scores=dict(name="马六",age=25)

print(scores)

结果为:{"张三":25,"李四":65,"王五":984,"马六":25}

(4)获取输出

第一种方法:

scores = {"张三":25,"李四":65,"王五":984,}

print(scores"张三"])

结果为:25

 第二种方法:使用get( )方法

scores = {"张三":25,"李四":65,"王五":984,}

print(scores.get("张三"))

结果为:25

这里还有俩点要注意的:

(1)用第一种方法的时候,如果输入的健不存在key,那么就抛出keyerror的异常

(2)用get()方法取值的时候若字典不存在指定的key的时候,这返回None

(5)key的判断

(1)in 的使用

scores = {"张三":25,"李四":65,"王五":984,}

print("张三" in scores)

结果是:ture

(2 )not in 的使用

 scores = {"张三":25,"李四":65,"王五":984,}

print("张三" not in scores)

结果是:false

 (6)字典的删除

这儿用到的是del()大家想必很熟悉的吧

 scores = {"张三":25,"李四":65,"王五":984}

del.scores["张三"]

print(scores)

结果为: {"李四":65,"王五":984}

 (7)字典的新增

scores = {"李四":65,"王五":984}

scores["张三"]=90

print(scores)

结果为{"张三":90,"李四":65,"王五":984}

(8) 清空

scores = {"李四":65,"王五":984}

scores.clear()

print(scores)

结果为:{}

 (9) 字典视图的三个方法

(3)key() 获取字典里面所有的key

 scores = {"张三":25,"李四":65,"王五":984}

keys=scores.keys()

print(keys)

print(list(keys))       #可以把得到的这个keys转化成列表

结果如下:

 

(2) Values()   获取字典中的所有Values

 scores = {"张三":25,"李四":65,"王五":984}

values=scores.values()

print(values)

print(list(values))       #可以把得到的这个values转化成列表

 结果如下:

 (3) items()   获取字典中的所有的key和values对

 scores = {"张三":25,"李四":65,"王五":984}

items=scores.items()

print(items)

print(list(items))

结果如下:

 

  (4)字典的历遍

 scores = {"张三":25,"李四":65,"王五":984}

for item in scores

    print(item)

结果为下:

 

 (10) 内置函数zip()

items=["Fruits","Books","Others"]
prices=[85,15,26]
i={item.upper():price for item,price in zip(items,prices)}

print(i)

 结果为:

 当items和prices俩个列表的元素不相等时,按元素少的那一个进行打包。

 (10) 字典的基本原理(初学者可以忽略)

a={}
a["name"]="xiaoli"

假设字典a对象创建完后,数组长度为8:

 我们要把”name”=”xiaoli”这个键值对放到字典对象a中,首先第一步需要计算键”name”的散列值。Python中可以通过hash()

这个样子的:

bin(hash("name"))
'-0b1010111101001110110101100100101'

 由于数组长度为8,我们可以拿计算出的散列值的最右边3位数字作为偏移量,即“101”,十进制是数字5。

我们查看偏移量5,对应的bucket是否为空。

如果为空,则将键值对放进去。

如果不为空,则依次取右边3位作为偏移量,即“100”,十进制是数字4。

再查看偏移量为4的bucket是否为空。直到找到为空的bucket将键值对放进去。

流程图如下:

扩容

python会根据散列表的拥挤程度扩容。“扩容”指的是:创造更大的数组,将原有内容拷贝到新数组中。

接近2/3时,数组就会扩容。


二、元组

元组属于不可变序列,不能修改元组中的元素。

因此,元组没有增加元素、修改元素、删除元素相关的方法。

所以我们只需要学习元组的创建和删除,元组中元素的访问和计数即可。

元组支持如下操作:

  1. 索引访问
  2. 切片操作
  3. 连接操作
  4. 成员关系操作
  5. 比较运算操作
  6. 计数:元组长度len()、最大值max()、最小值min()、求和sum()等。

 (1)元组的创建

俩种方法:(1)第一种通过()创建

通过()创建元组。小括号可以省略。
        a = (10,20,30)    或者   a = 10,20,30

如果元组只有一个元素,则必须后面加逗号。这是因为解释器会把(1)解释为整数1,(1,)解释为元组。

a = (1)

print(type(a))

结果为:<class 'int'>


a = (1,)     #或者  a = 1,

print(type(a))

结果为:<class 'tuple'>

(2)通过tuple()创建元组

tuple(可迭代的对象)

例如:
       b = tuple()          #创建一个空元组对象
       b = tuple("abc")

b = tuple(range(3))

b = tuple([2,3,4])

(3)创建空元组 

t3=()
t4=tuple()
print(type(t3))
print(type(t4))

 结果:

 

总结一下: 

tuple()可以接收列表、字符串、其他序列类型、迭代器等生成元组。

list()可以接收元组、字符串、其他序列类型、迭代器等生成列表。

(2)元组的元素访问

元组的元素访问和列表一样,只不过返回的仍然是元组对象。

 a = (20,10,30,9,8)

print(a[1])

结果为:10

print( a[1:3])

结果为:(10, 30)

print( a[:4])

结果为:(20, 10, 30, 9)

 (2)元组的元素是不能添加的,但是元素总若有列表,这可以像列表里面添加元素

t=("python",10,100,[10.20])

t[1]=100    #这个是报错的,因为元组不能乡里添加元素


但是像这样

t[3].append(200)

print(t)

结果为:("python",10,100,[10.20,100])



三、集合

(1)主要的特点:

  • 内置函数结构
  • 与列表,字典是一样的是可变序列
  • 无value的字典

(2)集合的表示方法

表示有俩种表示的方式。

(1)第一种直接定义

s={"python","hello","i","love","you",95 }

(2) 第二种使用内置函数set()定义

set={"python","hello","i","love","you",95}
print(set)

将列表住转为集合

 a = ['a','b','c','b']

 b = set(a)

 print(b)

{'a','b','c','b'}

结果为:

 (3)集合的相关操作

 (1)集合元素的判断

# in        not  in的使用

 s={"python","hello","i","love","you",95 }

print(95 in s)       #ture

print(95 not in s )    # false

(2)集合元素的增加 

(1)add() 一次增加一个元素

 s={"python","hello","i","love","you",95 }

s.add(800)

print(s)

{"python","hello","i","love","you",95,800 }

(2)update()     至少增加一个元素

 s={"python","hello","i","love","you",95 }

s.update({80,800,80000,8000000})

print(s)

{"python","hello","i","love","you",95 ,80,800,80000,8000000}

 (3)集合元素的删除

(1)remove()  一次删除一个指定的元素

 s={"python","hello","i","love","you",95 }

s.remove(95)

print(s)

{"python","hello","i","love","you" }

 (2)pop()  一次随机删除一个元素

 s={"python","hello","i","love","you",95 }

s.pop()

print(s)

{"python","i","love","you" ,95}       #注意是随机删除

(3)清空集合

 s={"python","hello","i","love","you",95 }

s.clear()

print(s)

{}      


 (4)并集、交集、差集等运算。

我们给出示例:

a = {1,3,'sxt'}

b = {'he','it','sxt'}

 a|b                            #并集

{1, 3, 'sxt', 'he', 'it'}


a&b                                 #交集

{'sxt'}


 a-b                                  #差集

{1, 3}


a.union(b)                       #并集

{1, 3, 'sxt', 'he', 'it'}


a.intersection(b)             #交集

{'sxt'}


 a.difference(b)                #差集

{1, 3}



原创不易,读者大大点点赞!!!!  

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

学python的小李

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值