字典
1、 字典使用:创建
"""字典使用:创建"""
# 1、使用大括号填充键值对
dc = {'name': 'Harry Potter', 'age': 18}
print(type(dc), dc) #<class 'dict'> {'name': 'Harry Potter', 'age': 18}
# 2、使用字典构造方法
dc1 = dict() # 空字典
dc2 = dict(name="Harry Potter", age=18) # 关键字参数赋值
print(type(dc2), dc2)
dc3 = dict([("name", "Harry Potter"), ("age", 18)])
print(type(dc3), dc3) #<class 'dict'> {'name': 'Harry Potter', 'age': 18}
# 3、使用字典推导式
dc4 = {k: v for k, v in [("name", "Harry Potter"), ("age", 18)]}
print(type(dc4), dc4) #<class 'dict'> {'name': 'Harry Potter', 'age': 18}
2、 字典使用:访问元素
"""字典使用:访问元素"""
dc = {"name": "Harry Potter", "age": 18}
# 1、访问存在的key
print(dc["name"]) #Harry Potter
print(dc["age"]) #18
# 2、访问不存在的key,会报KeyError错误
print(dc['hobby'])
3、 字典使用:操作元素
- 语法:dict[key] = value
- 添加元素
- 键不存在
- 修改元素
- 键已经存在
"""字典使用:操作元素"""
dc = {"name": "Harry Potter", "age": 18}
# 1、修改年龄,改为20
dc['age'] = 20
print(dc) #{'name': 'Harry Potter', 'age': 20}
# 2、新增hobby字段
dc['hobby'] = 'Magic'
print(dc) #{'name': 'Harry Potter', 'age': 20, 'hobby': 'Magic'}
4、 字典使用:嵌套字典
- 嵌套字典
- 字典的值可以是字典对象
"""字典使用:嵌套字典"""
dc = {"name": "Harry Potter", "age": 18, "course": {"magic": 90, "python": 80}}
# 1、获取课程Magic的值
print(dc['course']['magic']) #90
# 2、把python分数改成100分
dc['course']['python'] = 100
print(dc) #{'name': 'Harry Potter', 'age': 18, 'course': {'magic': 90, 'python': 100}}
5、 字典方法 keys()
"""字典方法 keys()"""
dc = {"name": "Harry Potter", "age": 18}
keys = dc.keys()
print(type(keys), keys) #<class 'dict_keys'> dict_keys(['name', 'age'])
# 1、遍历查看所有的键
for key in keys:
print(key)
#name
#age
# 2、将视图对象转成列表
print(list(keys)) #['name', 'age']
6、 字典方法 values()
"""字典方法 values()"""
dc = {"name": "Harry Potter", "age": 18}
values = dc.values()
print(type(values), values) #<class 'dict_values'> dict_values(['Harry Potter', 18])
# 1、遍历查看所有的值
for value in values:
print(value)
# 2、将视图对象转成列表
print(list(values)) #['Harry Potter', 18]
7、 字典方法 items()
"""字典方法 items()"""
dc = {"name": "Harry Potter", "age": 18}
items = dc.items()
print(type(items), items) #<class 'dict_items'> dict_items([('name', 'Harry Potter'), ('age', 18)])
# 1、遍历查看所有的项
for item in items:
print(item)
#('name', 'Harry Potter')
#('age', 18)
# 2、将视图对象转成列表
print(list(items))#[('name', 'Harry Potter'), ('age', 18)]
8、 字典方法 get()
get(key)
- 获取指定 key 关联的 value 值。
- 入参:
- key:字典的键,必传。
- 返回:
- 如果 key 存在于字典中,返回 key 关联的 value 值。
- 如果 key 不存在,则返回 None。
- 此方法的好处是无需担心 key 是否存在,永远都不会引发 KeyError 错误
"""字典方法 get()"""
dc = {"name": "Harry Potter", "age": 18}
# 1、访问存在的key
name = dc['name']
print(name)#Harry Potter
# 2、访问不存在的key
hobby = dc.get('hobby')
print(hobby) #None
9、 字典方法 update()
update(dict)
- 使用来自 dict 的键/值对更新字典,覆盖原有的键和值。
- 入参:
- dc:字典对象,必传
- 返回:None
dc = {"name": "Harry Potter", "age": 18}
dc.update({"age": 20, "hobby": "magic"})
print(dc) #{'name': 'Harry Potter', 'age': 20, 'hobby': 'magic'}
10、 字典方法 pop()
pop(key)
- 删除指定 key 的键值对,并返回对应 value 值。
- 入参:
- key:必传
- 返回:
- 如果 key 存在于字典中,则将其移除并返回 value 值
- 如果 key 不存在于字典中,则会引发 KeyError。
"""字典方法 pop()"""
dc = {"name": "Harry Potter", "age": 18}
# 1、弹出
item = dc.pop("age")
print(dc, item) #{'name': 'Harry Potter'} 18
# 2、删除不存在的key
dc.pop("hobby") # 报错keyError
11、 字典推导式
# 未使用字典推导式的写法
dc = {'a': 1, 'b': 2, 'c': 3}
d_old = dict()
for k, v in dc.items():
if v > 1:
d_old[k] = v ** 2
print(d_old)
# 使用字典推导式
d_new = {k : v ** 2 for k,v in dc.items() if v > 1 }
print(d_new)
12、 实例
“”"
给定一个字典对象,请使用字典推导式,将它的key和value分别进行交换。也就是key变成值,值变成key。
输入: {‘a’: 1, ‘b’: 2, ‘c’: 3}
输出: {1: ‘a’, 2: ‘b’, 3: ‘c’}
“”"
dc = {'a': 1, 'b': 2, 'c': 3}
d_old = dict()
for k, v in dc.items():
d_old[v] = k
print(d_old)#{1: 'a', 2: 'b', 3: 'c'}
# # 使用字典推导式
d_new = {v : k for k,v in dc.items() }
print(d_new)#{1: 'a', 2: 'b', 3: 'c'}
13、字典的总结
字典的创建:使用大括号{}、 dict()、字典推导式
访问元素:[key]
操作元素:dict[key] = value
字典可以嵌套字典
字典的方法:
- keys()
- values()
- items()
- get()
- update()
- pop()