无字天书之Python第八页(基础数结构—下)

在这里插入图片描述

过年不停更之第二更。。。
内容比较长,耐心看耐心写,小编也不容易。。。。。。。。

传送门

无字天书之Python第一页
无字天书之Python第二页
无字天书之Python第三页
无字天书之Python第四页
无字天书之Python第五页
无字天书之Python第六页
无字天书之Python第七页

前言

在上一页中讲到了list列表和tuple元组,这一页说dict字典和set

dict

Python内置了字典:dict的支持,dict全称dictionary,在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度。
组成结构:
字典由一组键(key)值(value)对组成的,类似于:{key1: value1, key2: value2}这样一种形式。字典的每个键值(key=>value)对用冒号 : 分割。每个对之间用逗号 , 分割。整个字典包括在花括号 {} 中。

简单使用

创建dict

# 创建字典
dict1={'name':'onlyk','age':'18'}# 有点类似与Java中的Json数据格式
print(dict1)
print(type(dict1))

在这里插入图片描述
注意: 键必须是唯一的,但值则不必。值可以取任何数据类型,但键必须是不可变的,如字符串,数字或元组。

获取字典中的值:语法字典名[键]

# 访问字典中的值 字典名[键]
print(dict1['name'])

访问不存在会报错

print(dict1['nnn'])

报错结果
# print(dict1['nnn'])
# Traceback (most recent call last):
#   File "E:/Python/DataType/eight.py", line 11, in <module>
#     print(dict1['nnn'])
# KeyError: 'nnn'

解决方案:

#上述问题可以避免,先查找键名是否存在
ttt='nnn'
if ttt in dict1:
    print(dict1[ttt])
else:
    print('不存在')

结果为:不存在

CURD

# dict的CRUD
# 添加
dict1['nnn']='添加'
print(dict1)
# 修改
dict1['name']='only老K'
print(dict1)
# 删除
del dict1['nnn']
print(dict1)

在这里插入图片描述

内置函数和方法讲解

.cope()函数好好理解下

# 内置函数和方法讲解
print('置函数和方法讲解')
# .keys()返回一个迭代器,可以使用 list() 来转换为列表,结果包含所有的key
print('.keys()!!!!')
print(dict1.keys())
print(list(dict1.keys()))
print(type(list(dict1.keys())))
# .values()返回一个迭代器,可以使用 list() 来转换为列表,该列表包含所有的 value 。
print('.values()!!!!')
print(dict1.values())
print(list(dict1.values()))
print(type(list(dict1.values())))
# .items()以列表返回可遍历的(键, 值) 元组数组
print('.items()!!!!')
print(dict1.items())
print(list(dict1.items()))
print(type(list(dict1.items())))
# .get(key, default=None)返回指定键的值,如果值不在字典中返回default值
print('.get()!!!!')
print(dict1.get('name'))
print(dict1.get('nane','没有'))
# .pop(key[,default]) 删除字典给定键 key 所对应的值,返回值为被删除的值。key值必须给出。 否则,返回default值。
print('.pop(key[,default])!!!!')
print(dict1.pop('age'))
print(dict1)
# .dict.setdefault(key, default=None)和get()类似, 但如果键不存在于字典中,将会添加键并将值设为default
print('.setdefault(key, default=None)!!!!')
dict1.setdefault('age','20')
print(dict1)
# .update(dict2)把字典 dict2 的键/值对更新到 dict 里。
print('.update(dict2!!!!')
dict2={'ttt':'ttt'}
dict1.update(dict2)
print(dict1)
# .clear() 删除字典内所有元素。注意: 删除字典内所有元素,并非删除字典。
print('.clear()!!!!')
dict2.clear()
print(dict2)

# .cope()返回一个字典的浅复制
print('.cope()!!!!!!!!!!!!')
dict3={'cope':'ccc','cope2':'ppp'}
# 浅拷贝:引用对象
dict4=dict3
print('内存地址一样')
print(id(dict3))
print(id(dict4))
# 浅拷贝:深拷贝父对象(一级目录),子对象(二级目录)不拷贝,还是引用
dict5=dict3.copy()
print(dict5)
dict3.pop('cope')
print(dict3)
print(dict5)
print(id(dict5))
print(id(dict3))

在这里插入图片描述

set

集合(set)是一个无序的不重复元素序列。
可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。

简单使用

# set集合
print('set集合')
set1={'only','老K'}
set2=set('a,b,onlyK')
print(set1)
print(set2)
print(type(set1))
print((type(set2)))

# 集合去重
set3={'app','oop','app'}
print(set3)

在这里插入图片描述

集合的CRUD

# 集合的基本操作
set1={1,2,3,4,5,6}
set2={4,5,6,7,8,9}
#求交集
set3=set1.intersection(set2)
print(set3)
# 求并集
set4=set1.union(set2)
print(set4)
# 做差
set5=set1.difference(set2)
print(set5)

在这里插入图片描述

内置函数和方法

# 内置函数和方法
print('内置函数和方法')
# .add()为集合添加元素
set6={1,2,3,4}
set6.add(5)
print(set6)
set6.add('onlyK')
print(set6)
set6.add((12,22))
print(set6)

# update()给集合添加元素
set7={1,2}
set7.update({3,'aaa','only老K',(4,5)})
print(set7)
# 好像看起来 update() 和 add() 功能是一样的,区别在于 add() 参数只能是单个元素,而 update() 中的参数是一个 set 集合。
# .pop()随机移除元素
set7.pop()
print(set7)
# 相比较上面 pop() 的随机删除,在删除元素的时候更多的我们是使用的 remove() 或者下面我们将要介绍的 discard()。

# .remover()移除指定元素。 但是删除不存在的会报错
set8={'only老K','111','asd'}
set8.remove('asd')
print(set8)
# .dicard()删除集合中指定的元素,元素不存在则什么都不做。
set9={1,2,3,4,5,6,(1,2,3)}
set9.discard(6)
print(set9)
# .clear()清除集合中的所有元素,并不会清除集合。
set9.clear()
print(set9)
# .isdisjoint()判断两个集合是否包含相同的元素,如果没有返回 True,否则返回 False。
set6={1,2,3,4}
set7={1,2}
set8={5,6}
print(set6.isdisjoint(set7))
print(set6.isdisjoint(set8))
# set.issubset()判断指定集合是否为该方法参数集合的子集。
print(set7.issubset(set6))
print(set8.issubset(set6))
# .issuperset()判断该方法的参数集合是否为指定集合的子集。
print(set6.issuperset(set7))
print(set6.issuperset(set8))

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值