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
必须不可变,所以可以用数字,字符串或元组充当,而用列表就不行特别的,要避免key不存在的错误,有两种办法:
{ }
是用来创建一个空字典in
判断key是否存在'Thomas' in d
False
get()
方法:如果key不存在,可以返回None,或者自己指定的value>>> d.get('Thomas') # 返回None
>>> d.get('Thomas', -1)
-1
基本操作包括:访问、修改、删除、pop()
访问字典
dict = {'Name': 'Ivan', 'Age': X, 'Class': 'First'}
print (dict['Name']) # Ivan
修改字典
键/值
对,修改已有键/值
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 # 删除字典
pop(key)
用pop(key)方法,对应的value也会从dict中删除:类似于出栈。
>>> d.pop('Bob')
75
>>> d
{'Michael': 95, 'Tracy': 85}
字典内置函数
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)) #
字典内置方法
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() 随机返回并删除字典中的最后一对键和值。 |
集合(set)是一个无序的不重复元素序列;set和dict类似,也是一组key的集合,但不存储value。由于key不能重复,所以,在set中,没有重复的key。
{ }
或者 set()
函数创建集合set()
而不是 { }
(因为 { } 是用来创建一个空字典)一般的,为了与字典区分,多用set()
函数创建集合
1、添加元素
s.add( x )
s.update( x )
2、移除元素
s.remove( x )
s.discard( x )
len(s)
4、清空集合
s.clear()
5、判断元素是否在集合中存在
x in s
:存在返回 True,不存在返回 False方法 | 描述 |
---|---|
add() | 为集合添加元素 |
clear() | 移除集合中的所有元素 |
copy() | 拷贝一个集合 |
difference() | 返回多个集合的差集 |
difference_update() | 移除集合中的元素,该元素在指定的集合也存在。 |
discard() | 删除集合中指定的元素 |
intersection() | 返回集合的交集 |
intersection_update() | 返回集合的交集。 |
isdisjoint() | 判断两个集合是否包含相同的元素,如果没有返回 True,否则返回 False。 |
issubset() | 判断指定集合是否为该方法参数集合的子集。 |
issuperset() | 判断该方法的参数集合是否为指定集合的子集 |
pop() | 随机移除元素 |
remove() | 移除指定元素 |
symmetric_difference() | 返回两个集合中不重复的元素集合。 |
symmetric_difference_update() | 移除当前集合中在另外一个指定集合相同的元素,并将另外一个指定集合中不同的元素插入到当前集合中。 |
union() | 返回两个集合的并集 |
update() | 给集合添加元素 |