字典和集合

二、dict字典

1.概述

dict也是一种存储方式,类似于list和tuple,但是,字典采用键—值(key—value)的形式存储

优点:具有极快的查找速度

2.key的特性

1.字典中的key必须唯一

2.key必须是不可变对象

例如:字符串、整数等都是不可变的,可以作为key

list是可变的,不能作为key

思考:保存一个班级中的童鞋的成绩

思路1:使用list或者tuple,但是容易发生错乱对不上号

思路2:使用二维list或者tuple,但是会比较慢

思路3:可以采用字典,将学生的学号或者名字作为key,成绩为value进行存储,方便查找

3.字典的创建

语法:

字典名 = {键1:值1,键2:值2,...}

dist1 = {'tom':90,'lili':78, 'lele':92}
print(dist1)

4.字典操作

4.1访问元素

语法:元素 = 字典名[key]

dist1 = {'tom':90,'lili':78, 'lele':92}
print(dist1['tom'])

注意:在key不存在的情况下,会报错

语法: 元素 = 字典.get(key)

功能:使用get的方法获取值,若key存在,则返回value的值,若key不存在则返回None

dist1 = {'tom':90,'lili':78, 'lele':92}
value = dist1.get('tom')
print(value)

4.2 添加元素

语法:字典名[key] = value

dist1 = {'tom':90,'lili':78, 'lele':92}
dist1['lisi'] = 89
print(dist1)

注意:一个key只能对应一个value,多次对一个key的value赋值,后面的值会把前面的值覆盖掉。

4.3 删除元素

语法:字典名.pop(key)

dist1 = {'tom':90,'lili':78, 'lele':92}
dist1.pop('tom')
print(dist1)

5.字典的遍历

5.1 使用for循环遍历

语法:

获取键

for key in dist:

​ print(key)

获取值

for value in dist.values() :

​ print(value)

同时获取键和值

for k, v in dist.items() :

​ print(k, v)

注意:字典是无序的,在内存中存储是无序的,因此无法通过下标来获取值

dist1 = {'tom':90,'lili':78, 'lele':92}
#获取字典的key
for key in dist1:
    print(key)
#获取字典中的value    
for value  in dist1.values():
    print(value)
#同时获取字典中的key与value
for k, v  in dist1.items():
    print(k, v)

6.与list的区别

1.dict的查找和插入的速度极快,不会随着key-value的增加而变慢,但是list在查找的时候需要从头向后挨个遍历元素,并且当数据量增大的时候,速度也会随着变慢

2.dict需要占用大量的内存,内存浪费多,而list只相当于存储了字典的key或者value部分,并且数据时紧密排列的。

 

三、set集合

1.概述

set与dict类似,也是一组key的集合,但与dist的区别在于set不存储value

本质:无序且无重复元素的集合

2.set的创建

语法:

set1 = set([1, 2, 3, 4, 5])

注意:创建set需要一个list或者tuple或者dist作为输入集合,重复的元素在set中会被自动的过滤

s1 = set([1, 2, 3, 4, 5])
print(s1)

3.set操作

3.1 set.add()

注意:

1.可以添加重复的元素,但是不会有效果

2.add 的元素不能是列表或者字典,因为他们是可变的

s1 = set([1, 2, 3, 4, 5])
s1.add(6)
s1.add((2, 3, 4))
print(s1)
#结果
{1, 2, 3, 4, 5, 6, (2, 3, 4)}

3.2 set.update()

功能:插入整个list、tuple、字符串打碎插入

注意:不能直接插入数字

s1 = set([1, 2, 3, 4, 5])
s1.update([4,"anam","hha"])
s1.update("hello")
print(s1)
#结果
{1, 2, 3, 4, 5, 'anam', 'l', 'o', 'h', 'e', 'hha'}

3.3 set.remove(元素)

功能:删除元素

s1 = set([1, 2, 3, 4, 5])
s1.remove(3)
print(s1)

3.4 遍历元素

语法:

for i in set :

print(i)

注意:set是无序的,因此不能通过下标获取元素

for index, data in enumerate(set):

​ print(index, data)

可以通过这种方式,来强行添加下标

s1 = set([1, 2, 3, 4, 5])
for i in s1:
    print(i)
​
for index,data in enumerate(s1):
    print(index, data)

3.5 交集与并集

语法:

交集 newest = set1 & set2

并集 newest = set1 | set2

s1 = set([1, 2, 3, 4, 5])
s2 = set([4, 5, 6, 7])
s3 = s1 & s2
s4 = s1 | s2
print(s3)
print(s4)
#结果
{4, 5}
{1, 2, 3, 4, 5, 6, 7}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值