一.创建字典
d1 = {'name': 'ethan', 'age': 20}
d2 = dict(name='ethan', age=20)
item = [('name', 'ethan'), ('age', 20)]
d3 = dict(item)
print(d1)
print(d2)
print(d3)
# {'name': 'ethan', 'age': 20}
# {'name': 'ethan', 'age': 20}
# {'name': 'ethan', 'age': 20}
二.遍历字典
d1 = {'name': 'ethan', 'age': 20}
# TODO 遍历key
for k in d1.keys():
print(k)
print('----------')
# TODO 遍历values
for v in d1.values():
print(v)
print('----------')
# TODO 遍历key、values
for k, v in d1.items():
print(k, v)
# name
# age
# ----------
# ethan
# 20
# ----------
# name ethan
# age 20
三.判断键/值是否在字典里面
d1 = {'name': 'ethan', 'age': 20}
# TODO 判断键是否在字典里面
if 'name' in d1.keys():
print('name键在字典中')
# TODO 判断值是否在字典里面
if 20 in d1.values():
print('20值在字典中')
# name键在字典中
# 20值在字典中
四.清空字典clear
用于清空字典中的所有项
d1 = {'name': 'ethan', 'age': 20}
d1.clear()
print(d1)
# {}
五.浅拷贝copy
# TODO 对可变对象的修改保持同步
d1 = {'name': 'ethan', 'age': 20, 'test': [1, 2, 3]}
d2 = d1.copy()
d2['test'].remove(1)
print(d1)
print(d2)
# TODO 对不可变对象的修改保持独立
d11 = {'name': 'ethan', 'age': 20, 'test': [1, 2, 3]}
d22 = d11.copy()
d22['name'] = '123'
print(d11)
print(d22)
# {'name': 'ethan', 'age': 20, 'test': [2, 3]}
# {'name': 'ethan', 'age': 20, 'test': [2, 3]}
# {'name': 'ethan', 'age': 20, 'test': [1, 2, 3]}
# {'name': '123', 'age': 20, 'test': [1, 2, 3]}
六.深拷贝deepcopy
from copy import deepcopy
#TODO对可变对象的修改,不会影响到原对象
d1 = {'name': 'ethan', 'age': 20, 'test': [1, 2, 3]}
d2 = deepcopy(d1)
d2['test'].remove(1)
print(d1)
print(d2)
#TODO对不可变对象的修改,任何修改不会影响到原对象
d11 = {'name': 'ethan', 'age': 20, 'test': [1, 2, 3]}
d22 = deepcopy(d11)
d22['name'] = '123'
print(d11)
print(d22)
#TODO 结论:任何修改不会影响到
# {'name': 'ethan', 'age': 20, 'test': [1, 2, 3]}
# {'name': 'ethan', 'age': 20, 'test': [2, 3]}
# {'name': 'ethan', 'age': 20, 'test': [1, 2, 3]}
# {'name': '123', 'age': 20, 'test': [1, 2, 3]}
七.获取字典某个元素get
当我们试图访问字典中不存在的项时会出现 KeyError,但使用 get 就可以避免这个问题
d1 = {'name': 'ethan', 'age': 20, 'test': [1, 2, 3]}
print(d1.get('name'))
print(d1.get('password'))
# ethan
# None
八.设定键值setdefault
用于对字典设定键值
# TODO 当键不存在的时候,setdefault 返回设定的默认值并且更新字典
d = {}
d.setdefault('name', 'tanglei')
print(d)
# TODO 当键存在的时候,会返回已有的值,但不会更新字典
d['age'] = 18
print(d)
d.setdefault('age', 20)
print(d)
# {'name': 'tanglei'}
# {'name': 'tanglei', 'age': 18}
# {'name': 'tanglei', 'age': 18}
九.更新字典update
用于将一个字典添加到原字典,如果存在相同的键则会进行覆盖
# TODO 将一个字典添加到原字典
d = {"name": "mike"}
e = {"age": 18}
d.update(e)
print(d)
# TODO 存在相同的键则会进行覆盖
a = {"name": "mike"}
b = {'name': 'tom', 'age': 18}
a.update(b)
print(a)
# {'name': 'mike', 'age': 18}
# {'name': 'tom', 'age': 18}
十.items
将所有的字典项以列表形式返回,这些列表项的每一项都来自于(键,值)
b = {'name': 'tom', 'age': 18}
e = b.items()
print(e)
for k, v in b.items():
print(k, v)
# dict_items([('name', 'tom'), ('age', 18)])
# name tom
# age 18
十一.keys/values
keys 方法将字典的键以列表形式返回
values 方法将字典的值以列表形式返回
b = {'name': 'tom', 'age': 18}
# TODO 获取key
print(b.keys())
# TODO 获取value
print(b.values())
十二.移除pop
用于将某个键值对从字典移除,并返回给定键的值
b = {'name': 'tom', 'age': 18}
e = b.pop('name')
print(e)
print(b)
# tom
# {'age': 18}
十三.移除popitem
用于随机移除字典中的某个键值对
b = {'name': 'tom', 'age': 18}
e = b.popitem()
print(e)
print(b)
# ('age', 18)
# {'name': 'tom'}