列表存在的问题:
1、 可以储存多个元素,但是数据的意义不明确
2、 列表要通过索引进行更改,实际操作不方便
字典 dict
字典里面的元素叫做键值对,
使用:进行链接,多个价值对使用逗号进行隔开
{键1:值1,键2:值2,键3:值3} 键(key):值(value)
注意:
1、键名不可以重复,键名重复,新值覆盖旧值
2、键名必须是不可变的数据类型(数值 字符串 元组)
字典的查找
字符串 列表属于有序的序列结构,所以可以用索引(唯一)进行查找
但是 字典属于键值对的映射结构,没有索引的概念
字典当中,键唯一,索引我们可以通过键进行值的查找
语法:
dict[键key] 通过键查找值value
dict.get(key)
字典的修改
dict[key] = 新值
存在:修改原有值
不存在: 新增一个键值对
dict.setdefault(key, value)
存在, 进行查找的功能,返回键对应的值
不存在,进行修改的功能, 新增我们指定的键值对
dict.update(New_dic其他字典)
当New_dict中间的键名存在 dict里面的时候,
使用New_dict里面的值替换原有的值 当键不存在,新增键值对
注意:健名不可以更改
字典的删除
dict.pop(key)
dict.popitem() 随机删除,在3.6版本之后,会自动排序,表现为从后面开始删除
del dict[键名] 通过del关键字指定删除
视图(对象)方法
dict.keys() 获取所有的键对象
dict.values() 获取所有的值对象
dict.items() 获取所有的键值对对象
集合的定义 set
{值1,值2, ....} 值只能是(数值 字符串 元组)
set("其他序列结构类型")
特点:
1、去重(集合里面的元素是不可以重复的)
2、无序,多次运行会发现顺序不一样(对于较小的数值,会自动排序)
se1 = {1, "1", ("a", "b")}
print(se1)
print(type(se1))
se2 = set()
print(type(se2))
print(type({}))
li = [1, 3, 4, 2, 6, 3]
print(set(li))
集合的运算
交集 & 两个集合里面相同的元素
并集 | 两个小组的所有元素
差集 - 我有你没有
a - b 返回a有b没有的元素
b - a 返回b有a没有的元素
集合的增删改查
s3 = {1, 2, 3, 4}
s3.add("天天") # 添加一个元素
s3.update([9, 8]) # 添加多个元素
s3.update({10, 11}) # 添加多个元素
s3.update({"a":1, "b":1}) # 只会将键加入进去
print(s3)
is 判断数据类型
== 只判断数值大小一样
is 既要大小一样,又要类型一致
is not 功能与 is相反
not and or 优先级逐步降低
6大基础数据类型总结
可变 列表(list) 字典(dict) 集合(set)
不可变 数值(int flaot bool) 字符串(str) 元组(tuple)
非序列结构:数值
有序序列结构: 列表 字符串 元组
散列结构: 集合 字典(键值对的映射结构)
列表 [值1,值2,值3,...]
元组 (值1,值2,值3,...)
集合 {值1,值2,值3,...}
字典 {键1:值1,键2:值2,键:值3,...}