字典
- 字典是Python中唯一内建的映射=类型,用一对花括号“{”和“}”作为边界,元素之间以逗号分隔,每个元素是一对键(key)和值(value),键和值之间用冒号分隔。
d={"name":"Tom","age":10,5:50}
d
- 返回结果:{‘name’:‘Tom’,‘age’:10,5:50}
type(d)
- 返回结果:<class ‘dict’>
- 字典可通过key查找关联数据Value。
d["age"]
- 返回结果:10
- 字典的元素没有位置索引,因此不能像序列那样通过位置索引来查备找成员数据。但是每一个值都有一个对应的键。字典的用法是通过键key来访问相应的值value。
- 字典的键是不重复的。
- 字典可以通过以下的方式创建:
- 在字典中,键可以是任何不可修改类型的数据,如数值、字符串和元组,列表是可变的,不能作为字典的键;而键对应的值可以是任何类型的数据。
字典操作
1. 字典中“键-值”对的数量
- len() 可以返回字典中项(键-值对)的数量。
2. 查找与特定键相关联的值
- 查找与特定键相关联的值,其返回就是字典中与给定的键相关联的值。
number={1:23,4:56,7:89,10:1112}
number=['1']
- 返回结果:23
- 如果指定的键在字典中不存在,则报错。
3. 修改字典中的数据
- 在字典中,某个键相关联的值可以通过赋值语句来修改,如果指定的键不存在,则相当于向字典中添加新的键值对。
a={12:34,45:56,67:78}
a['12']='33'
a
- 返回结果:[12:33,45:56,67:78]
a['99']='100'
a
- 返回结果:[12:33,45:56,67:78,99:100]
4. 删除字典条目
- del命令可以用来删除字典条目或者整个字典。
a={12:34,45:56,67:78}
del a['12']
a
- 返回结果:{45:56,67:78}
del a #删除整个字典
- 注:这时候再想返回字典 a 的值就会报错。
5. 检查字典中是否含有某键的项
- in命令可以查找某键值是否在字典中。如果存在返回“True”,否则返回“False”。
字典方法
1. keys()、values()
- keys()方法将字典中的键以可迭代的dict_keys对象返回。values()方法将字典中的值以可迭代的dict_values对象形式返回。
- 可迭代对象的意思是指存储了元素的一个容器对象。
- 例如:
a={12:34,45:56,67:78}
a.keys()
- 返回结果:dict_keys([12,45,67])
list(a.keys())
- 返回结果:[12,45,67]
tuple(a.keys())
- 返回结果:(12,45,67)
- values()和key()操作方法相同,一个返回的是键,一个返回的是值。
2.items()
- items()方法将字典中的所有键和值以可迭代的dict_items对象形式返回,每对键值对组成元组作为一个元素。
a={12:34,56:78,90:100}
a.item()
- 返回结果:([(12,34),(56,78),(90,100)])
list(a.items())
- 返回结果:[(12,34),(56,78),(90,100)]
3. setdefault(key,default=None)
- 如果字典中包含参数key对应的键,则返回该键对应的值;
- 否则以参数key的值为键,以参数default的值为该键对应的值,在字典中插入键-值对元素,并返回该元素的值部分。
- 例如:
4. update()
- update()方法将另一个字典中的所有键值对一次性地添加到当前字典中,如果两个字典中存在有相同的键,则以另一个字典中的值更新当前字典。
- 例如:
5. clear()
- clear()方法将字典中的所有条目删除,变成空字典。
- 注意与del命令的区别。
6.pop(k[,d])
- pop()方法是删除字典中指定键k对应的键值对,并返回相应的值。
- 如果字典中不存在键为k的项,且指定了参数d,则返回d;否则将抛出KeyError。
- 例如:
7. popitem()
- popitem()方法能够弹出字典的最后一个元素,并将该元素中的键和值构成一个元组返回,如果字典为空则触发异常。
- 例如:
8. get()
- get(key,default=None)返回指定键所对应的值,如果键不存在则返回默认值。默认值为None,也可以自己指定。
- 例如:
遍历字典
1. 遍历字典的键
- 如图:
2. 遍历字典的值
- 如图:
3.遍历字典的键值对
- 如图:
列表、元组与字典之间的转换
1. 列表与字典之间的转化
- Python中的list()可以将字典转换为列表
- 如图:
2. 元组与字典之间的转化
- Python中的tuple()可以将字典转换为元组。其3使用方法同list()。
集合
- 集合是一组用“{”和“}”括起来的无序、不重复元素, 元素之间用逗号分隔。元素可以是各种类型的不可变对象 。Python提供了集合类型set,用于表示大量无序、不重复元素的集合。
集合的创建
- 集合有两种创建方式:
- 一种是用一对花括号将多个元素括起来,元素之间用逗号分隔:
- 另一种是用setO)创建集合:
- 使用set(obi)将字符串、列表、元组等类型的obi转换为集合类型
- 使用set()创建空集合
例如:
- 注意:空集合只能用set()来创建,而不能用花括号{}表示,因为Python将{}用于表示空字典。
- 集合中没有相同的元素,因此Python在创建集合的时候会自动删除掉重复的元素。
- 例如:
gg={1,2,2,3,4,5,6,6,7,8,8,9}
gg
- 返回结果:{1,2,3,4,5,6,7,8,9}
集合的运算
1. len()
- len()函数返回集合中元素的个数。
2. in
- 判断某元素是否存在于集合之中,判断结果用布尔值True或False表示。
3. 并集、交集
- 并集:创建一个新的集合,该集合包含两个集合中的所有元素。
- 交集:创建一个新的集合,该集合为两个集合中的公共部分。
- 如图:
4. 差集
- A-B表示集合A与B的差集,返回由出现在集合A中但不出现在集合B中的元素所构成的集合。
- 例如:
5. 对称差
- 返回由两个集合元素中那些不重叠的元素所构成的集合。
- 例如:
可迭代(Iterable)对象
- 从表面来看,只要用for…in…进行遍历的对象就是可迭代对象,那么列表、元组、字符串、字典都是可迭代对象(这几种不是迭代器)。
- 实际上,如果一个类实现了__iter__方法,那么这个类的对象就是可迭代对象。
- 例如:
- list类实现了__iter__方法,list对象就是可迭代对象。
- 调用内置函数isinstance()来判断一个对象是否属于可迭代对象。
- 例如:
- 数字是不可迭代对象,而一个range对象是可迭代的,集合也是可迭代的。
迭代器(Iterator)
- 实现了__iter__方法和__next__方法的类的对象称为迭代器(Iterator)
- 可以通过对象的__next__方法不断返回下一个值。
- 也可以通过内置函数next()访问参数中对象的下一个元素。
- 可以通过调用Python内置函数isinstance()来判断一个对象是否属于迭代器(Iterator)
- 与上图类似,就是把Iterable换成Iterator。
- 虽然列表、元组、字符串、字典、集合都是可迭代(Iterable)对象而不是迭代器(Iterator),但可以通过iter()函数获得一个迭代器(Iterator)。