内容概览:
1. 字典的基本概念
2. 字典的增
3. 字典的删
4. 字典的改
5. 字典的查
6. 字典的其他操作
7. 字典的五种创建方式
字典的基本概念
① 列表如果存储大量的数据,查找速度相对会很慢 ② 列表存储的数据一般没有什么关联性,比如 ["Jane", 160, "女"],单看这个列表你不知道它们之间的联系
① 字典的查询速度非常快,因为它是 Python 中唯一的映射类型,采用键值对的形式存储数据 ② 字典在 Python3.5 及之前的版本中是无序的,但是之后的版本开始优化机制,字典会按照创建之初的顺序排列 ③ 字典与列表的区别:字典当中的元素是通过键来存取,而不是通过偏移来存取
① Python 对 key 进行哈希函数运算,根据计算的结果得到 value 的存储地址,所以字典是无序存储的,且 key 必须是可哈希的 ② 可哈希表示 key 必须是不可变类型,比如 int、string、tuple 等,而且这个键是唯一的,后面再有相同的键就会替换前面的对应的 value
new_dic = {"name": "aaa", "name": "bbb"} print(new_dic) # {'name': 'bbb'}
02
字典的增
ic = {"name": "Jane", "age": 18, "sex": "female"}
dic["name"] = "John"
print(dic) # {'name': 'John', 'age': 18, 'sex': 'female'}
dic["hobby"] = "watch TV"
print(dic) # {'name': 'John', 'age': 18, 'sex': 'female', 'hobby': 'watch TV'}
2. setdefault(参数1, 参数2):有则不变,无则添加
dic = {"name": "Jane", "age": 18, "sex": "female"}
dic.setdefault("name", "John")
print(dic) # {'name': 'Jane', 'age': 18, 'sex': 'female'}
dic.setdefault("k", "v")
print(dic) # {'name': 'Jane', 'age': 18, 'sex': 'female', 'k': 'v'}
03
字典的删
dic = {"name": "Jane", "age": 18, "sex": "female"}
# 注意:pop() 里面必须要有参数,且参数是字典的键,否则报错
dic_pop = dic.pop("age")
print(dic_pop) # 18
print(dic) # {'name': 'Jane', 'sex': 'female'}
# 另外,最好设置一个返回值,避免程序报错
dic = {"name": "Jane", "age": 18, "sex": "female"}
dic_pop = dic.pop("a", "找不到该键")
print(dic_pop) # 找不到该键
print(dic) # {'name': 'Jane', 'age': 18, 'sex': 'female'}
2. del:没有返回值
dic = {"name": "Jane", "age": 18, "sex": "female"}
del dic["age"]
print(dic) # {'name': 'Jane', 'sex': 'female'}
# 使用 del 时,必须是该字典存在的键,否则会报错
del dic["a"]
print(dic) # 报错
3. popitem():Python3.5及之前的版本字典是无序的,所以使用这个方法是随机删除一个键值对;之后的版本因为有序,就只删除最后一个键值对,和 pop() 功能一样
dic = {"name": "Jane", "age": 18, "sex": "female"}
dic_pop = dic.popitem()
print(dic_pop) # ('sex', 'female')
print(dic) # {'name': 'Jane', 'age': 18}
dic_pop = dic.popitem()
print(dic_pop) # ('age', 18)
print(dic) # {'name': 'Jane'}
# 注意 dic.pop(key) 与 dic.popitem() 的区别
# 前者删除元素,括号里要加字典的键;后者是删除最后一对键值对
4. clear():清空字典
dic = {"name": "Jane", "age": 18, "sex": "female"}
dic.clear()
print(dic) # {}
04
字典的改
dic = {"name": "Jane", "age": 18, "sex": "female"}
dic["name"] = "Alex"
print(dic) # {'name': 'Alex', 'age': 18, 'sex': 'female'}
2. update(dic):将某个字典的所有键值对有则覆盖,无则添加到另一个字典中可
dic = {"name": "Jane", "age": 18, "sex": "female"}
new_dic = {"hobby": "nothing", "age": 20}
new_dic.update(dic)
print(new_dic) # {'hobby': 'nothing', 'age': 18, 'name': 'Jane', 'sex': 'female'}
# update() 的另一种用法,注意 key 不能加引号,也不能是数字,因为它是一个变量!
dic.update(weight=120, high=170)
print(dic) # {'name': 'Jane', 'age': 18, 'sex': 'female', 'weight': 120, 'high': 170}
05
字典的查
dic = {"name": "Jane", "age": 18, "sex": "female"}
ret1 = dic["name"]
print(ret) # Jane
# 如果没有该键就报错
ret2 = dic["hobby"]
print(ret2) # 报错
dic = {"name": "Jane", "age": 18, "sex": "female"}
ret1 = dic.get("name")
print(ret1) # Jane
ret2 = dic.get("hobby")
print(ret2) # None
ret3 = dic.get("aaa", "字典中没有该键")
print(ret3) # 字典中没有该键
06
字典的其他操作
dic = {"name": "Jane", "age": 18, "sex": "female"}
items = dic.items()
print(items) # dict_items([('name', 'Jane'), ('age', 18), ('sex', 'female')])
values = dic.values()
print(values) # dict_values(['Jane', 18, 'female'])
keys = dic.keys()
print(keys) # dict_keys(['name', 'age', 'sex'])
2. 循环字典的每种元素
dic = {"name": "Jane", "age": 18, "sex": "female"}
# 循环字典的每一个键
for key in dic.keys():
print(key)
# 运行结果:
name
age
sex
# 循环字典的每一个值
for value in dic.values():
print(value)
# 运行结果:
Jane
18
female
# 循环字典的每一个键值对
for key,value in dic.items():
print(key, value)
# 运行结果:
name Jane
age 18
sex female
07
字典的五种创建方式
######## 第一种:dict({键值对}) ########
dic = dict(name="Jane", age="12")
# 注意:这种创建方式,值不能是数字,即不能是 age=12
print(dic) # {'name': 'Jane', 'age': '12'}
######## 第二种:dic = {键值对} ########
dic = {"name": "Jane", "age": 12}
print(dic) # {'name': 'Jane', 'age': 12}
######## 第三种:fromkeys({键值对}) ########
dic.fromkeys("name", "Jane")
# 注意:这里的第一个参数是字典的键,可迭代,第二个参数是值,默认是 None
print(dic) # {'name': 'Jane', 'age': 12}
######## 第四种 ########
dic = dict([("a", 1), ("b", 2), ("c", 3)])
print(dic) # {'a': 1, 'b': 2, 'c': 3}
######## 第五种:zip() ########
l1 = [1, 2, 3]
l2 = ["a", "b", "c"]
dic = dict(zip(l1, l2))
print(dic) # {1: 'a', 2: 'b', 3: 'c'}
python培训班:http://www.baizhiedu.com/python2019