1.字典的定义
# 字典是key 和 value 一一对应的
# 定义一个字典
# my_dict = {"name":"小明","age":20}
# print(my_dict)
# # <class 'dict'>
# print(type(my_dict))
# "name"---> 键 key
# "小明"---> 值 value
# "name":"小明" ---> 键值对 -->key-value -->元素
# 字典中的key是唯一的
# my_dict = {"name":"小明","age":20, "name":"静静"}
# print(my_dict)
# 字典里的key需要为不可变数据类型 如 字符串,数字,元组 .一般情况下使用字符串作为key
# (不能作为key的数据类型 列表、字典)
# 定义空字典
# my_dict = dict()
# print(type(my_dict))
# my_dict = {}
# print(type(my_dict))
# 通过key获取value
my_dict = {"name": "小明", "age": 20}
# print(my_dict[0]) #字典是无序的,不支持下标索引获取数据
print(my_dict["name"])
2.字典的常见操作
my_dict = {'name': '吴彦祖', 'age': 28}
# <1>查看元素
# 通过key获取value,如果key存在返回对应的value,如果key不存在,报错
# my_name = my_dict["name"]
# my_name = my_dict["name1"]
# print(my_name)
# <2>修改元素
# 如果通过key修改字典中的value,直接给key赋值即可
# my_dict["age"] = 40
# print(my_dict)
# <3>添加元素
# 如果key不存在,自动添加一个新元素
# my_dict["age1"] = 40
# print(my_dict)
# <4>删除元素
# del
# del my_dict["age"]
# print(my_dict)
# clear -->清空 等价于 my_dict = {}
my_dict.clear()
print(my_dict)
# my_dict = {"name": "小明", "age": 20, "no" : "007"}
# <1>len() ->计算字典中键值对的个数
# l = len(my_dict)
# print(l)
# <2>keys
# keys = my_dict.keys()
# print(keys) #dict_keys(['name', 'age', 'no'])
# # print(keys[0]) 直接通过下标获取会报错,需要转换成列表
# print(list(keys)[0])
# <3>values
# values = my_dict.values()
# print(values) #dict_values(['小明', 20, '007'])
# print(list(values)[0])
# <4>items
# items = my_dict.items()
# print(items)
# print(list(items)[0][1]) #获取 小明
# my_dict = {"name": "小明", "age": 20, "no" : "007"}
# 判断一个key是否存在
# 通过in 判断 [key] 是否存在于字典中
# if "name" in my_dict:
# print("name 在")
# [了解]
# setdefault
# 通过key获取value 如果key存在 那么会返回这个value
# ret = my_dict.setdefault("name","静静")
# print(ret)
# 通过key获取value,如果key不存在,返回设置的默认值("静静"),然后把键值对添加到字典中
# ret = my_dict.setdefault("name1","静静")
# ret = my_dict.setdefault("name1") #None
# print(ret)
# print(my_dict)
# get
# 通过key获取value,如果key不存在,返回设置的默认值或None,不会对字典做任何操作
# ret = my_dict.get("name1")
# print(ret)
# print(my_dict)
3.字典的遍历
my_dict = {"name": "小明", "age": 20, "no" : "007"}
# 遍历key 不需要转成list,直接遍历即可
# for key in my_dict.keys():
# print(key)
# 遍历value
# for value in my_dict.values():
# print(value)
# 遍历item
# for item in my_dict.items():
# print(item)
# print("key=%s value=%s" %(item[0],item[1]))
# 打印变量,逗号隔开的效果演示
# print(1,2)
# num1 = 1
# num2 = 2
# print(num1,num2)
# for key,value in my_dict.items():
# print(key,value)
# enumerate() - list
my_list = [1, 3.14, True, "hello"]
# for value in enumerate(my_list):
# print(value)
# for i,key in enumerate(my_list):
# print(i,key)
# for i,key in enumerate(my_list,start=5):
# # print(i,key)
# enumerate() - dict
# 获取字典元素,序号默认从0开始
my_dict = {"name": "小明", "age": 20, "no" : "007"}
for i,key in enumerate(my_dict):
print(i,key)
4.集合的定义
# 集合的定义
# 集合是无序的,不可以通过下标索引获取元素
# 集合中的元素是不重复的--->列表去重
# 定义一个正常的集合
# my_set = {1, 3, 5, 7, 9}
# print(my_set)
# print(type(my_set))
# 定义一个空集合
# my_set1 = set()
# print(type(my_set1))
# my_set2 = {} #这种方式定义的是一个空字典
# # 1)作用 去重
# my_list = [1, 3, 5, 7, 3, 7]
# my_set = set(my_list)
# print(my_set)
# my_list = list(my_set)
# print(my_list)
# 了解
# 2)添加元素(add, update)
my_set = {1, 3, 5, 7, 9}
# my_set.add("abc")
# print(my_set)
# update 和列表中的extend相似
# my_set.update("abc")
# print(my_set)
# 删除元素(remove,pop,discard)
# remove
# my_set.remove(91) #值不存在会报错
# print(my_set)
# pop 删除任意一个元素(因为集合是无序的)
# my_set.pop()
# print(my_set)
# discard
# 不同于remove,如果元素不存在,不会报错
# my_set.discard(31)
# print(my_set)
# 交集和并集( & |)
my_list1 = [1, 2, 3, 4]
my_list2 = [3, 4, 5, 6]
my_set1 = set(my_list1)
my_set2 = set(my_list2)
# 两个列表中相同的元素
new_set1 = my_set1 & my_set2
print(new_set1)
new_set2 = my_set1 | my_set2
print(new_set2)