Python的内置的对象模型(数据类型):4.集合set和字典dict


一、集合set

1.定义

集合类型:

(1)集合是多个元素的无序组合

(2)集合类型与数学中的集合概念一致

(3)集合元素之间无序,每个元素唯一,不存在相同元素

(4)集合元素不可更改,不能是可变数据类型(万一可变,就可能相同)

  • 非可变数据类型:数字类型(整数,浮点数,复数);序列类型中的字符串,元组类型
  • 可变数据类型:列表

2.集合类型初始化

表示:

(1)表示:用{}表示,元素间用逗号分隔

(2)建立集合类型用{}set()

  • {}:用逗号分割
  • set():一个obj,将其每个元素拆分(比如str就是每个字符,list就是每个元素……)

(3)建立空集合类型,必须用set()

#{}表示
a={"123",13,True}
print(a)
#{'123', 13, True}
 
#set()表示
s=set("123")
print(s)
#{'1', '2', '3'}
# set(obj)的用法:参数只能是一个或者没有

# 一个元素用单引号
a=set('1')
print(a)
#{'1'}
 
# 多个元素用单引号
b=set('123')
print(b)
#{'2', '3', '1'}
 
# 多个元素间用逗号间隔
set('1','2','3')
# error
 
# 多个元素
ls=["py123",123,True]
c=set(ls)
print(c)
#{'py123', 123, True}
 
"""
总结:set()中传入的参数是一个其他类型的变量,'1'和'123'都是字一个符串类型的量,'1','2','3'错是因为它是多个元素,
要传入特定的多个元素,就要像ls一样将它们包装到另一种类型中成为一个变量。
"""

3.集合操作符

(1)基本操作符:

  • S&T,返回一个新集合,S和T都有的元素
  • S|T,返回一个新集合,S和T中的所元素
  • S-T,返回一个新集合,在S但不在T中的元素
  • S^T对称差集,返回一个新集合,S和T中的非相同元素
  • S<=TS>=T:返回True/False,判断S和T的真子集关系
  • S<TS>T:返回True/False,判断S和T的子集(包括相等)关系
A={"p","y",123}		#{'y', 123, 'p'}
B=set("pypy123")	#{'1', 'y', '2', '3', 'p'}
 
# 交集
print(A&B)			# {'p','y'}
# 并集
print(A|B)			# {'1','p','2','y','3',123}
# 差集
print(A-B)			# {123}
# 差集
print(B-A)			# {'3','1','2'}
# 对称差集
print(A^B)			# {'2','1','3',123}
# 子集
print(A<=B)			# False

(2)增强操作符:

  • S|=T:更新集合S,包括在集合S和T中的所有元素
  • S-=T:更新集合S,包括在集合S但不在T中的元素
  • S&=T:更新集合S,包括同时在集合S和T中的元素
  • S^=T:更新集合S,包括集合S和T中的非相同元素

3.集合的处理方法

  • S.add(x):如果x不在集合S中,将x增加到S
  • S.discard(x)移除S中元素x,如果x不在集合S中,不报错
  • S.remove(x)移除S中元素x,如果x不在集合S中,产生KeyError异常
  • S.clear()移除S中所有元素
  • S.pop()随机返回S的一个元素,同时在集合中移除这个元素并更新S,若S为空产生KeyError异常
  • S.copy():返回集合S的一个副本
  • len(S):返回集合S的元素个数
  • x in S:判断S中元素x,x在集合S中,返回True,否则返回False
  • x not in S:判断S中元素x,x不在集合S中,返回False,否则返回True(和上面一样,都是在则True
  • set(x):将其他类型变量x转变为集合类型

4.集合类型应用场景

# 数据去重:集合类型所有元素无重复
ls = ["p","p","y","y",123]
s = set(ls)
print(s)
'''
{'p','y',123}
'''

# 将集合转换为列表
lt = list(s)
'''
['p','y',123]
''' 

二、字典dict

1.字典类型定义

理解映射:

  • 映射是一种键(索引)和值(数据)的对应

  • 序列类型有0…N整数作为数据的默认索引

字典类型:

(1)字典类型是映射的体现

(2)键值对:键是数据索引的扩展

(3)字典是键值对的集合,键值对之间无序

(4)采用大括号{}dict()创建,键值对用冒号:表示

(5)

格式:

<字典变量>={<键1>:<值1>,<键2>:<值2>}

<值>=<字典变量>[<键>]

<字典变量>[<键>]=<值>

# []用来向字典变量中索引或增加元素
#生成一个字典
d={"中国":"北京","美国":"华盛顿","法国":"巴黎"}
print(d)
#{'中国': '北京', '美国': '华盛顿', '法国': '巴黎'}
 
print(d["中国"])
#'北京'
 
 
#生成一个空的字典
de={};
print(type(de))		#type(x)返回变量x的类型
#<class 'dict'>

2.字典处理函数及方法

函数或方法;

(1)del d[k]:删除字典d中键k对应的数据值

(2)k in d:判断键k是否在字典d中,如何在返回True,否则返回False

(3)d.keys():返回字典d中所有的键信息

(4)d.values():返回字典d中所有的值信息

(5)d.item():返回字典d中所有键值对信息

(6)d.get(k,<default>):键k存在,则返回相应值,不在则返回值

(7)d.pop(k,<default>):键k存在,则取出相应值,不在则返回值

(8)d.popitem():随机从字典d中取出一个 键值对,以元组形式返回

(9)d.clear():删除所有的键值对

(10)len(d):返回字典d中元素的个数

(11)d1.update(d2):添加字典2添加到字典1中

d={"中国":"北京","美国":"华盛顿","法国":"巴黎"}
 
print("中国"in d)
#True
 
print(d.keys())
#dict_keys(['中国', '美国', '法国'])	    #可以for遍历
 
print(d.values())
#dict_values(['北京', '华盛顿', '巴黎'])
 
print(d.get("中国","伊斯兰堡"))
#'北京'
 
print(d.get("巴基斯坦","伊斯兰堡"))
#'伊斯兰堡'
 
print(d.popitem())
#('法国', '巴黎')
#增加相同元素会出现更新
 
d={}
 
#增加元素方法1:d[新增键]=新值
d["a"]=1;d["b"]=2
print(d)
#{'a': 1, 'b': 2}
 
#更新现象
d["b"]=3
print(d)
#{'a': 1, 'b': 3}
 
#增加元素方法2:d1.update(d2)
d2={'c':3}
d.update(d2)
print(d)
#{'a': 1, 'b': 3, 'c': 3}
 
#更新现象
d3={'c':9}
d.update(d3)
print(d)
#{'a': 1, 'b': 3, 'c': 9}
发布了461 篇原创文章 · 获赞 183 · 访问量 12万+

猜你喜欢

转载自blog.csdn.net/sandalphon4869/article/details/104541330
今日推荐