python字典和集合对象可以进行索引操作吗_python 集合(set)和字典(dictionary)的用法解析...

Table of Contents generated with DocToc

ditctaionary and set

hash 介绍

hash是计算机中非常常见一种查找的手法,它可以支持常数时间的insert、remove、find,但是对于findMin、findMax、sort等操作就支持的不是很好,具体是为什么呢;

hash其实是通过key来找value的,可以这样简单的理解为value都被存在一个数组之中,每次你用key计算一下可以得到相应数组的下标,即 index=f(key) 是不是一下子就找到元素所在位置了呢!

集合-set

集合(set)是一类容器,元素没有先后顺序,并且元素的值不重复。

集合的字面量用花括号{}

eg:

{1,5,7}

{'apple', 'orange', 'pear', 'banana'}

创建

直接给变量赋值一个集合字面量

fruit = {'apple', 'orange', 'pear', 'banana'}

使用set()创建一个空集合

emp = set()

注:emp = {} #创建一个空字典

使用set()将列表或元组转换成集合

prime = set([1,3,5,7,11])

结果是:

{1, 3, 5, 7, 11}

操作和访问集合的元素

可以用add()和remove()添加和删除集合元素

可以用min()、max()、len()和sum()对集合操作。

集合内的元素是无序的,所以不能像列表那样通过下标来访问集合元素。

用循环实现遍历集合中的各个元素

s = {2,3,5,7,11}

for i in s:

print(i,end='')

#输出:

#235711

运算符in和not in 用于判断某个元素是否在集合中。

s = {2,3,5,7,11

print(5 in s)

print(4 not in s)

输出:

True

True

子集、超集、相对判断

如果集合s1中的元素,同样都在集合s2中,则称s1为s2的子集,s2为s1的超集。

使用s1.issubset(s2)来判断s1是否为s2的子集。

使用s2.issuperset(s1)来判断s1是否为s2的超集。

s1 = {2,3,5,7}

s2 = {1,2,3,4,5,6,7}

print(s1.issubset(s2))

print(s2.issuperset(s1))

输出:

True

True

使用关系运算符==和!=

- 判断2个集合包含的元素完全相同与否。

使用关系运算符<,<=,>,>=。

- 如果s1是s2的真子集,则s1

- 如果s1是s2的子集,则s1<=s2是True

- 如果s1是s2的真超集,则s1>s2是True

- 如果s1是s2的超集,则s1>=s2是True

- 注:s1是s2的真子集的意思是s1是s2的子集,但是s2中至少有一个s1中不存在的元素; s1是s2的真超集的意思是s1是s2的超集,但是s1中至少有一个s2中不存在的元素。

通过集合的函数或运算符进行集合的并集、交集、差集和对称差的集合运算。

运算

函数

运算符

说明

并集

union()

|

同数学中的并集

交集

intesection()

&

同数学交集

差集

difenrence()

-

你可能感兴趣的:(python字典和集合对象可以进行索引操作吗_python 集合(set)和字典(dictionary)的用法解析...)