数据结构-集合(set)和字典(dict)

前序:
set()表示集合,是一个无序不重复元素的集,特点是消除重复元素,集合对象支持union(联合),intersection(交),difference(差)和sysmmetric dirrerence(对称差集)等数学运算。
dict()表示字典,是以(kek,value)这样的键值对来保存的。

set(集合)

下面就以具体的实例来学习set相关的操作。
set的结构为{'c','c++','python'},是以{ }来包含其中的元素,并且具有去重的功能。

>>>s = {'apple','orange','apple','pear','banana','orange'}
>>>print(s)
>>>{'apple','orange','banana','pear'}

这里看到打印的结果是直接去重之后的,但是细心的话应该已经发现,集合中的元素顺序并不是按照创建时的顺序打印,可见set是无序的。

创建一个集合

可以直接调用set的构造函数来创建一个空的集合

>>>s = set()

是不是在想可不可以这样创建一个空的集合?

>>>s = {}
#这样是不行的,因为dict(字典)也是通过{}来包含子元素的,所以系统默认这样创建出的是一个空的字典
#但是如果是这样,就是创建了含有一个元素的集合
>>>s = {'apple'}
#因为如果是字典,它的单个元素格式为
>>>s = {'苹果':'apple'}

判断是否存在
可以采用in关键字来判断一个元素是否在一个集合里,返回值是一个bool值

>>>s = {'apple','orange','apple','pear','banana','orange'}
>>>'origin' in s
>>>True
>>>'peach' in s
>>>False

并、交、差、补

通过下面这几个例子,来理解set的数学运算

>>> a = set('abracadabra')
>>> b = set('alacazam')
>>> a                                  # a去重后独有的元素
{'a', 'r', 'b', 'c', 'd'}          
>>> b                                  # b去重后独有的元素
{'a','c','l','m','z'}                   
>>> a - b                              # a 和 b的差集
{'r', 'd', 'b'}
>>> a | b                              # a 和 b的并集
{'a', 'c', 'r', 'd', 'b', 'm', 'z', 'l'}
>>> a & b                              # a 和 b的交集
{'a', 'c'}
>>> a ^ b                              # a 和 b的补集
{'r', 'd', 'b', 'm', 'z', 'l'}

集合推导式

>>> a = {x for x in 'abcdabcdabcd' if x not in 'ab'
>>> a
{'c','d'}

dict(字典)

序列是以连续的整数为索引,字典是以关键字为索引,关键字是任意不可变类型,通常是字符串或数值,如果元组中只包含字符串和数字,也可以作为关键字。
列表不可以做关键字,因为列表可以用索引、切割或者append()和extend()等方法改变。

字典的结构为:用{ }来包含所有的元素如:{'苹果':'apple','香蕉':'banana'},key-value之间用 : 分割,键值对和键值对之间用 , 分隔。

创建字典

创建空的字典

#通过构造函数
>>>d = dict()
#直接通过符号
>>>d = {}

创建非空字典

#通过构造函数,直接从key-value对中创建字典
>>>d = dict([('苹果','apple'),('香蕉','banana')])

#直接通过符号创建
>>>d = {'苹果':'apple','香蕉':'banana'}

增加一个键值对

# 如果'橘子'这个key值不存在,则向字典中增加该键值对
# 如果'橘子'这个key值存在,则更新它的value为=后面的新值
>>>d['橘子'] = 'orange'

删除一个键值对

# 采用dict内置的pop方法
# 该key值存在,则删除该键值对,返回其value值
>>>d.pop('苹果')
'apple'
# 该key值不存在,KeyError错误

# 也可以采用del关键字
>>>del d['苹果']

查询key对应的value

#对应key存在,则返回value
>>>d['苹果']
'apple'

#key值不存在,则报KeyError的错误

获取所有关键字或值

#通过dict.keys()可以拿到字典中所有的key值
>>>list(d.keys())
['苹果','香蕉']
#通过dict.values()可以拿到所有的值
>>>list(d.values())
['apple','banana']

对字典进行排序

sorted(d.keys())

判断key是否存在

>>>'苹果' in d
True
>>>'菠萝' in d
False

遍历字典

# 使用items方法,得到对应的key-value值
>>>d = {'苹果':'apple','香蕉':'banana'}
>>>for k,v in d.items():
    print(k,v)
dict items([('苹果''apple'),('香蕉''banana')])

以上即使关于集合和字典的一些知识点。

猜你喜欢

转载自blog.csdn.net/qq_36528114/article/details/80758496