python数据类型(字典、集合)


散列类型是什么:

就是无序列表,和有序序列一样的,都是储存数据的

特征:就是没有顺序,没有下标值,没有切片

有序序列:str,list,tuple

无序序列:set,dict

字典(dict)

定义:其实和列表差不多的功能,都是储存各种各样的数据,和列表不一样是:字典没有下标值但有键值对。

特征:有键值对 =》{key,value}

特点:可以修改

key值:就是键值

作用:是和下标值一样的功能,是标识位置的作用

特点:key值是唯一不变而且不可重复的值,(因为key值是程序员自己设置的,而下标值会移动(list插入或者删除,后面的位置是都发生了移动))

value值: 就是数值

特点:是数值,是可以重复的值(各种类型的数值)

思考一下:key值是不是全部数据类型还是固定哪些数据类型?

因为key值具有唯一不变且不可重复的特点,所以key值的数据类型是固定的,其固定的数据类型可为:str,tuple,bool,number(int float)

而value值的数据类型:全部数据类型

定义字典格式:(字典:{} 列表:[] 元组:() )

序列名 = {key1: value1,key2: value2,....}

#字典的定义
a= {1: 1, 1.0: 1, "1": 1, True: 1, (1,): 1}
print(a)
print(type(a))
字典方法:(增删改查)
增加与修改:
方式1:update( )

格式:dict.update({key: value}) #dict.update(新字典)

1. 如果输入的字典为相同的key值,只会修改value值,也就是更新value值 (可做修改功能)

2. 如果输入的字典没有相同key值,就会在字典的最右边加上字典数据 (可做增加功能)

方式2:dict[key] = value (也是经常用的,就是如果key值是int类型,这样写会和有序序列分不清)。

方式3:dict.setdefault( )

格式:dict.setdefault(key, default),数值的默认是None(空值,空值数据类型),如果你不写default就是None

注意:如果遇到相同的key值,是没有任何改变的,只有添加功能,没有修改

#定义字典
a= {"1":1,"2":2}
print(type(a))  #查看定义的字典类型
print(a["1"])   #字典的查找
​
#字典的增加,方式1:序列名.update(新字典)
a.update({"3":3})   
print(a)
#方式2:序列名[key值] = value值
a[True] =4
print(a)
​
#方式3
a.setdefault("5",[1,2,3])    #key值"5"处的value值为[1,2,3]
print(a)
a.setdefault("a")  # key值"a"处的value值为None
print(a)
删除:
方式1:pop() (和列表pop是差不多)

格式:dict.pop(key) (当dict.pop(key)中的key值在字典dict中没有时,运行会报错)

思考一下:value删除了,key值是否还存在 ?

key值和value值是一对存在,如果一个没有了,另一个就是会消失 (夫妻锁)

#定义字典
a= {"1":1,"2":2}
#字典的删除,方式1:字典名.pop(key值)
a.pop("1")
print(a)
a.pop("3")   #因为key值"3"在字典a中不存在,所以运行会报错
print(a)
方式2:popitem()

格式:dict.popitem() #随机删除键值对,结果显示的是删除最右边一个键值对

方式3:del

del :和有序序列一样的也是有两种写法:

del 字典名     #物理删除

del 字典名[key]      # 只能删除一个键值对,不能删除多个,因为字典为无序序列,不能进行切片多个删除

#定义字典
a= {"1":1,"2":2,"3":3}
#删除方式2:字典名.popitem()
a.popitem()
print(a)
#删除方式3:del
dela["1"]    #删除"1"这个键值对
print(a)
dela          #物理删除
print(a)
方式4:clear()

格式:dict.clear()

清空数值,留下一个空字典

#定义字典
a= {"1": 1, "2": 2}
a.clear()
print(a)  
查询:

方式1:字典名[key值] 返回value值

注:列表、元组查找:序列名[index]

方式2:dict查询

格式:序列名.get(key, default=None)

有两种情况:

(1)key值存在:无论有没有设置default值,结果均返回value值

(2)key值不存在

①如果没有设置default值,返回None值

②如果设置default值, 返回设置的default值

#定义字典
a= {"1": 1, "2": 2}
#字典的查找:字典名[key值]
print(a["1"])    #返回1
#字典的查询:字典名.get(key,defaule)
​
#key值存在,无论是否设置default值,均返回value值
print(a.get("1"))   #返回1
print(a.get("1","abc"))  #返回1
​
#key值不存在
print(a.get("3"))   #返回None
print(a.get("3","a")) #返回a
字典常用方法
1.items()

定义: 获取字典全部key值和value值,并以元组的形式放在列表里面

格式:dict.items()

#创建字典a
a= {"1": 1, "2": 2}
print(a.items())   #返回dict_items([('1', 1), ('2', 2)])
# dict_items([('1', 1), ('2', 2)])可以看作[('1', 1), ('2', 2)]
# list代表字典可以修改的,元组括起来就是传输中不能变的意思
2.values() ,keys()

定义:

values():获取字典全部的value值,输出list形式

keys():获取字典全部的key值,输出list形式

#创建字典a
a= {"1": 1, "2": 2}
print(a.values())
print(a.keys())
3.fromkeys( )

定义:用于创建或者批量创建相同数值的字典

格式:fromkeys(keys, default=None)

此时,所有的keys位置处的value值均为设置的default值,而当不设置default值时就是None

注意:fromkeys是没有任何添加功能的,需要另一个变量进行储存或者相同变量名覆盖

# 空字典
a= {}
b= ("1",2,True,"a","5")   
a=a.fromkeys(b)    
print(a)   #返回{'1': None, 2: None, True: None, 'a': None, '5': None}
c=a.fromkeys(b,2)
print(c)  #返回{'1': 2, 2: 2, True: 2, 'a': 2, '5': 2}

集合(set)

(1)集合没有key值,也没有index值,即没有标识,所以不能查询,只能用成员运算符in或者not in 看它在不在

(2)这个集合和数学的集合一样的道理,集合中的元素(数值)有三个特性:

①确定性:给定一个集合, 任给一个元素, 该元素或者属于或者不属于该集合,二者必居其一,不允许有模棱两可的情况出现。

②互异性:一个集合中,任何两个元素都认为是不相同的,即每个元素只能出现一次。(所以可用于去重)

③无序性

此外,集合中数值的类型是固定的,数值只能是:str,tuple,bool,number类型

作用:通常会用在去重,可将有相同数值的list或tuple转化为set类型后,去处重复数值后再强制转化为原来的类型。

格式:a = {数值1,数值2,....}

​# 集合的应用:去重

#创建集合a
a={1,2,"3",4}
# 如何定义一个空集合
a=set()  #a = {}为创建一个空字典
print(type(a))

#去除列表a中的相同数值
a= [1,1,1,2,2,3,4,4]  #创建列表
a=set(a)  #将列表转化为集合后
a=list(a)  
print(a)  #返回[1, 2, 3, 4]
常用方法
添加:add()
a={1,2,"3",4}
a.add(5)  # 随机添加 
print(a)
删除:
remove( ), discard( )

格式:集合名.remove(数值),discard(数值)

remove:如果数值不存在就是报错

discard:如果数值不存在。不会报错

a= {1}
# a.remove(2)
a.discard(1)
print(a)
集合并集,交集以及差集:

运算操作

描述

&(交集)

获取两个集合相同的数值

|(并集)

获取两个集合全部的数值

-(差集)

获取左边集合中右边没有的数值

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值