字典占用的内存相对列表而言,更多一些,但是查询速度很快,即便数据量很大时,速度也基本不变。
字典
- 键值对
- 键key的特性
- 1.无序
- 2.唯一性,如果重复,后面的value会覆盖前面的value
- 3.只能使用不可变类型的数据,主要使用字符串,其他的不可变类型:数字,布尔类型,元组,None也可以
- 查找
- 通过key来查找
- person =
- print(person['name']) # 鹿晗,通过key找value
- print(person.get('age'))
- print(person['a']) # 报错
- print(person.get('a')) # 不报错,获取了None
- print(person.get('sex', '女')) # 不报错,获取了女
- 创建方式
- 直接通过{key: value}创建
- # 键=值
- dog = dict(name='旺财', like='舔')
- # 通过zip
- dog = dict(zip(['name', 'like'], ['旺财', '骨头']))
- # 将字符串看成是列表,与上一个原理相同
- dog = dict(zip('abc', 'xyz'))
- # 直接将列表转化为字典
- dog = dict([('name', '旺财'), ('like', '游泳')])
- print(dog) #
- 增加/修改
- # 以键为索引
- cat =
- cat['age'] = 3
- cat['sex'] = 'female'
- print(cat)
- # 删除
- # pop
- cat =
- cat.pop('sex')
- print(cat) #
- # popitem,默认删除最后对键值,但由于key是无序的,所以认为是随机删除
- # clear清空
- # del 通过键来删除
- 基本操作
- 拼接
- 判断
- 长度
- 没有下标,所以不能切片
- 遍历
- 获取所有key
- k = d.keys()
- print(k) # dict_keys(['a', 'b', 'c'])
- print(list(k)) # ['a', 'b', 'c']
- for key in d.keys():
- for value in d.values():
- for key, value in d.items():
字符串是不可变类型,所以所有针对字符串的函数都必须有返回值,原字符串不变
字典与列表的区别
- 列表
- 1.定义方式:[1, 2, 3],一般存放的时相同类型的数据
- 2.内存消耗较小
- 3.数据量增大时,查找所需时间更长(速度更慢)
- 字典
- 1.定义方式:{key: value},一般存放相同对象的不同属性
- 2.内存消耗较大一点
- 3.随着数据量增大,对查找速度影响不大,查询速度很快
集合
- 集合的特点
- 集合一般用来去重
- 创建集合
- set1 =
- set1 = set() # 空集合
- 字典转集合,集合的元素是字典的key
- d1 =
- s1 = set(d1)
- print(s1)
- 集合的长度
- 遍历
- 集合的操作
- s1 =
- s1.add(4) # 添加1个元素
- 添加多个元素
- print(s1) #
- s1.update([5, 6, 7])
- print(s1) #
- 删除
- remove
- discard # 如果删不掉,不会报错
- clear # 清空
- 改
- 集合之间的关系
- print(s1 & s2) # 交集
- print(s1 | s2) # 并集
- print(s1 ^ s2) # 补集/对称差集
- print(s1 - s2) # 差集
- print(s1 > s2) # s1 是否包含s2
- print(s1 < s2) # s2 是否包含s1
字符串基础
- 拼接
- 重复
- 字符串长度
- 判断
- # 下标,与列表的用法一致
- # 切片
- s = 'i am god'
- print(s[::-1]) # dog ma i
- # 遍历
- for c in s:
- for i in range(len(s)):
- 转义
- # \n 换行
- # \t 制表符,Tab键
- # \让右边的字符没有语义
- print(r'hello\njack') # hello\njack,一次性使右边的字符都没有语义
- replace
- replace():替换
- s = 'hello world'
- s2 = s.replace('world', 'python') # 默认替换所有,加个count,表示替换count个字符