1、dict字典数据类型
字典数据类型、map数据类型(映射类型)、容器数据类型,具有key-value键值对,key具有唯一性,不可改变
定义:demo_dict = {} 或 demo_dict = {"name": "tom", "age": 18}
a_dict = dict.formkeys([1,2,3], "hello")
取数据:
print(demo_dict["name"]) # 通过key取得value的值,如果获取一个不存在的key,会报错,KeyError
demo_dict["name"] = "joy" # 如果key存在,则是修改key对应的value的值,如果不存在,则是向字典中添加新的数据项
字典的遍历:
遍历所有数据:
for item in demo_dict.items():
print(item)
key关键字的遍历:
for key in demo_dict.keys():
print(key)
value的遍历:
for value in demo_dict.values():
print(value)
如何判断指定的key是否存在于字典中:
print("sex" in demo_dict)
print(demo_dict.__contains__("addr"))
版本区别:
py2: demo_dict.has_key("name")
py3: in关键字
其他操作:
删除数据项操作:
demo_dict.pop("name") # 通过key来删除
demo_dict.popitem() # 没有参数,随机删除一个数据项
清空字典:
demo_dict.clear()
复制(副本):
d_dict = demo_dict.copy()
修改字典:
demo_dict["name"] = "tom" # 如果存在则为修改,不存在为添加
demo_dict.setdefault("name", "jim") # 第一个参数为key,第二个参数为默认值(如果不存在)
更新:
a_dict = {"sex": "男", "addr": "北京"}
demo_dict.update(a_dict)
2、set集合数据类型
set集合数据类型和字典数据类型相比,set没有value值,set中的元素不能重复
定义:
a_set = set()
b_set = {1,2,3}
添加元素:
a_set.add(2)
a_set.update(b_set)
删除元素:
a_set.remove(2)
清空:
a_set.clear()
不可变集合:
num_set = frozenset([1,2,3,4]) # 不可变集合,不能添加,删除,清空元素,可以复制
集合间的运算:
print(2 in a_set) # 判断某个元素是否存在 not in 不在
print(a_set != b_set) # 不等于
print(a_set >= b_set) #
print(a_set & b_set) # 求交集
print(a_set | b_set) # 求并集
print(a_set - b_set) # 求差集
print(a_set - b_set) # 大数减小数
print(a_set ^ b_set) # 异或运算
3、list/dict/set的区别
①、查找元素速度
list元素较多时,查找速度会随着元素的个数增多而减慢,而dict不会,所有顺序由关键字key来决定,查找速度接近一个恒定值
②、内存
list占用内存空间小,dict占用空间大
③、其他
list中的元素可以重复,dict里面的key是不能重复的,set元素不能重复,重复会发生覆盖