Python基础—— Task06 字典和集合
1. 字典dict {}
1.1 字典的定义与特性
Python内置了字典dict,在其他语言中也称为map。字典是另一种可变容器模型,且可存储任意类型对象。字典使用键-值(key-value)
存储,每个键值(key=>value)对用冒号:
分割,每个对之间用逗号,
分割,整个字典包括在花括号{}
中,具有极快的查找速度。
d = {key1 : value1, key2 : value2 }
>>> d['Jack'] = 90
>>> d['Jack']
90
>>> d['Jack'] = 88
>>> d['Jack']
88
创建字典
dict1 = { 'abc': 456 }
dict2 = { 'abc': 123, 98.6: 37 }
字典的特性
value
可以是任何的 python 对象,既可以是标准的对象,也可以是用户定义的,但key
不行key
必须是唯一的,但值(value)则不必- 多次对一个
key
放入value
,后面的值会把前面的值冲掉,即不允许同一个键出现两次。创建时如果同一个键被赋值两次,后一个值会被记住 key
必须不可变,所以可以用数字,字符串或元组充当,而用列表就不行- dict内部存放的顺序和key放入的顺序是没有关系的
特别的,要避免key不存在的错误,有两种办法:
{ }
是用来创建一个空字典- 通过
in
判断key是否存在
'Thomas' in d
False
- 通过dict提供的
get()
方法:如果key不存在,可以返回None,或者自己指定的value
>>> d.get('Thomas') # 返回None
>>> d.get('Thomas', -1)
-1
1.2 字典的基本操作
基本操作包括:访问、修改、删除、pop()
访问字典
- 根据key(键)访问value(值)
dict = {'Name': 'Ivan', 'Age': X, 'Class': 'First'}
print (dict['Name']) # Ivan
- 若字典里没有的键访问数据(不存子要访问的key),会输出错误
修改字典
- 向字典添加新内容的方法是:增加新的
键/值
对,修改已有键/值
dict = {'Name': 'Ivan', 'Age': X, 'Class': 'First'}
dict['Age'] = 20 # 更新 Age
dict['Code'] = "Python" # 添加信息
删除操作
- 删除单一键值对、清空字典、删除字典
dict = {'Name': 'Ivan', 'Age': X, 'Class': 'First'}
del dict['Name'] # 删除键 'Name'
dict.clear() # 清空字典
del dict # 删除字典
- 注:del() 方法后面也会讨论
pop(key)
用pop(key)方法,对应的value也会从dict中删除:类似于出栈。
>>> d.pop('Bob')
75
>>> d
{'Michael': 95, 'Tracy': 85}
1.3 字典内置函数&方法
字典内置函数
len(dict)
:计算字典元素个数,即键的总数
dict = {'Name': 'Ivan', 'Age': X, 'Class': 'First'}
print(len(dict)) # 3
str(dict)
:输出字典,以可打印的字符串表示
dict = {'Name': 'Ivan', 'Age': X, 'Class': 'First'}
print(str(dict)) # "dict = {'Name': 'Ivan', 'Age': X, 'Class': 'First'}"
type(variable)
:返回输入的变量类型,如果变量是字典就返回字典类型
dict = {'Name': 'Ivan', 'Age': X, 'Class': 'First'}
print(type(dict)) # <class 'dict'>
字典内置方法
Python字典包含了以下内置方法:
序号 | 函数及描述 |
---|---|
1 | radiansdict.clear() 删除字典内所有元素 |
2 | radiansdict.copy() 返回一个字典的浅复制 |
3 | radiansdict.fromkeys() 创建一个新字典,以序列seq中元素做字典的键,val为字典所有键对应的初始值 |
4 | radiansdict.get(key, default=None) 返回指定键的值,如果值不在字典中返回default值 |
5 | key in dict 如果键在字典dict里返回true,否则返回false |
6 | radiansdict.items() 以列表返回可遍历的(键, 值) 元组数组 |
7 | radiansdict.keys() 返回一个迭代器,可以使用 list() 来转换为列表 |
8 | radiansdict.setdefault(key, default=None) 和get()类似, 但如果键不存在于字典中,将会添加键并将值设为default |
9 | radiansdict.update(dict2) 把字典dict2的键/值对更新到dict里 |
10 | radiansdict.values() 返回一个迭代器,可以使用 list() 来转换为列表 |
11 | pop(key[,default]) 删除字典给定键 key 所对应的值,返回值为被删除的值。key值必须给出。 否则,返回default值。 |
12 | popitem() 随机返回并删除字典中的最后一对键和值。 |
2. 集合
集合(set)是一个无序的不重复元素序列;set和dict类似,也是一组key的集合,但不存储value。由于key不能重复,所以,在set中,没有重复的key。
- 以使用
{ }
或者set()
函数创建集合 - 注意:创建一个空集合必须用
set()
而不是{ }
(因为 { } 是用来创建一个空字典)
一般的,为了与字典区分,多用set()
函数创建集合
2.1 集合的基本操作
1、添加元素
s.add( x )
s.update( x )
x 可以有多个,用逗号分开
2、移除元素
s.remove( x )
s.discard( x )
- s.pop() : 随机删除集合中的一个元素
3、计算集合元素个数 len(s)
4、清空集合
s.clear()
5、判断元素是否在集合中存在
x in s
:存在返回 True,不存在返回 False
2.2 集合的内置方法
方法 | 描述 |
---|---|
add() | 为集合添加元素 |
clear() | 移除集合中的所有元素 |
copy() | 拷贝一个集合 |
difference() | 返回多个集合的差集 |
difference_update() | 移除集合中的元素,该元素在指定的集合也存在。 |
discard() | 删除集合中指定的元素 |
intersection() | 返回集合的交集 |
intersection_update() | 返回集合的交集。 |
isdisjoint() | 判断两个集合是否包含相同的元素,如果没有返回 True,否则返回 False。 |
issubset() | 判断指定集合是否为该方法参数集合的子集。 |
issuperset() | 判断该方法的参数集合是否为指定集合的子集 |
pop() | 随机移除元素 |
remove() | 移除指定元素 |
symmetric_difference() | 返回两个集合中不重复的元素集合。 |
symmetric_difference_update() | 移除当前集合中在另外一个指定集合相同的元素,并将另外一个指定集合中不同的元素插入到当前集合中。 |
union() | 返回两个集合的并集 |
update() | 给集合添加元素 |