集合类型(set):支持关系操作符(in),对象大小计算操作符(len()),也是iterable。
集合是0个或多个对象引用的无序组合,这些对象引用所引用的对象都是可哈希运算的。因集合时无序的,没有索引位置的概念,也不能分片或按步距分片。有两种内置的集合类型:可变的set类型,固定的frozenset类型。
所有内置的固定数据类型(比如 float、frozenset、int、str、tuple)都是可哈希运算的,都可以添加到集合中。内置的可变数据类型(比如 dict、list、set)都不是可哈希运算的,这些数据类型不能添加到集合中。
空集合必须使用set()创建,非空集合可不使用set()函数创建,是用大括号将一系列以逗号隔开的值包裹起来创建集合。
集合中包含的每个数据项都是独一无二的。x是一个字符串列表,在执行x=list(set(x))后,x中的每个字符串都将是独一无二的,其存放顺序也是任意的。
set(): 将其他类型转换为集合,当字典作为参数传入set()函数时,只有键会被使用。
a={1,2} b={2,3}
in:测试值是否在集合中存在。’2’ in a 存在返回True
intersection()或&:交集运算符,查看多个集合之间组合的结果,结果是一个集合
a & b 或 a.intersection(b)
union()或|:并集运算符,元素至少出现在一个集合中
a|b 或 a.union(b)
difference() 或 - :差集运算符,元素出现在第一个集合,但不出现在第二个集合
a-b 或 a.difference(b)
symmetric_difference() 或 ^ : 异或集运算符,元素仅在两个集合中出现一次
a^b 或 a.symmetric_difference(b)
issubset() 或 <=:判断一个集合是否是另一个集合的子集,是返回 True
a<=b 或 a.issubset(b) a<b 真子集
issuperset() 或 >=:判断一个集合是否是另一个集合的超集,是返回 True
a>=b 或 a.issuperset(b) a>b 真超集
集合内涵:
除调用set()创建集合,还可使用集合内涵来创建集合。集合内涵是一个表达式,也是一个带有可选条件的循环,与列表内涵类似,也支持两种语法格式:
{expression for item in iterable}
{expression for item in iterable if condition}
映射类型:
映射类型是一种支持成员关系操作符(in)与尺寸函数(len())的数据类型,并且也是可以迭代的。是键-值数据项的组合,提供了存储数据项及其键、值的方法。Python3.0支持两种无序的映射类型:内置的dict类型与标准库中的collections.defaultdict类型;Python3.1中引入了一种新的有序的映射类型 collections.OrderedDict
字典(dict):
与列表类似,但其中元素的顺序无关紧要,每个元素拥有与之对应的互不相同的键(key),需要通过键来访问元素。键通常是字符串,但还可以是python中其他任意不可变类型:布尔型、整数、浮点型、元组、字符串以及其他一些。字典在其他语言中,可能会被称作关系型数组、哈希表或哈希图。
用大括号{}将一系列以逗号隔开的键值对(key:value)包裹起来即可进行字典的创建。空字典的创建:{}
dict(): 将包含双值子序列的序列转换成字典。 sarc=dict([‘may’,’rll’],[’pc’,’lc’])
update(): 将一个字典的键值对复制到另一个字典中,存在则替换。sarc.update(sarc1)
del: 删除具有指定键的元素。 del sarc[‘may’] [‘may’]:dict中的键
clear:删除所有元素。 sarc.clear
in: 判断某个键是否存在一个字典中。 ‘may’ in sarc 返回 True
[key]:指定字典名和键即可获得对应的值: sarc[‘may’],若不存在则产生异常keyError
get(): 指定键和可选值 sarc.get(‘may’,’not a’) 若键存在,返回键值,否则返回可选值,未给定可选值,返回 None
keys():获得字典中的所有键,需使用list()将返回转换为列表类型。 sarc.keys()
values():获取字典中的所有值,需使用list()将返回转换为列表类型。 sarc.values()
items():获取字典中所有的键值对,需使用list()将返回转换为列表类型,每个键值对以元组的形式返回。 sarc.items()
=:给字典赋值,对字典内容的修改会反映到所有与之相关联的变量名上。
copy(): 将字典复制到一个新字典中
字典内涵:语法格式如下
{keyexpression: valueexpression for key,value in iterable}
{keyexpression: valueexpression for key, value in iterable if condition}
默认字典:words=collections.defaultdict(int)
有序字典:words=collections.OrderedDict([(‘z’,-4),(‘e’,19),(‘k’,7)])