字典(Dictionary)是Python提供的一种常用的数据结构。
由键(key)和值(value)成对组成,键和值中间以冒号:隔开,项与项之间用逗号隔开,整个字典由大括号{}括起来。
特点:
- 符号为大括号{};
- 数据是以键值对的形式出现;
- 各个键值对之间用逗号隔开;
- 每个键是唯一的,值可以不是唯一;
- 字典中的数据与数据的顺序没有关系,即字典不支持下标(索引);
- 字符串、数值、元组,都可以作为键(必须是不可变的数据类型);
创建方法:
1、手动创建:
dict_1 = {'name': '崔东山', 'age': '30', '爱好': '羽毛球'}
2、使用内置函数dict()创建:
dict_2 = dict(name='xxx', age=30)
print(dict_2, type(dict_2)) # {'name': 'xxx', 'age': 30} <class 'dict'>
字典的常见操作:
查找:
1、根据Key键查找:若指定的键不存在,则抛出异常。
dict_4 = {'name': '崔东山', 'age': '30', '爱好': '羽毛球'}
print(f"通过key键查找:{dict_4['name']}")
# print(dict_4['id']) # 报错,字典中不存在该键
2、get():若查找的键不存在,则不会报错,并返回None:
"""字典序列.get(key,默认值)"""
dict_5 = {'name': '崔东山', 'age': '30', '爱好': '羽毛球'}
print(dict_5.get('name'))
print(dict_5.get('id', 192)) # 原字典中没有,赋予一个,并给定值
print(dict_5.get('id')) # None
3、keys():查找所有的键
"""获得所有的键"""
dict_6 = {'name': '崔东山', 'age': '30', '爱好': '羽毛球'}
print(dict_6.keys()) # dict_keys(['name', 'age', '爱好'])
4、values():查找所有的值
"""获取所有的值"""
print(dict_6.values()) # dict_values(['崔东山', '30', '羽毛球'])
5、items():获取所有的键和值
"""获得所有的键和值"""
print(dict_6.items()) # dict_items([('name', '崔东山'), ('age', '30'), ('爱好', '羽毛球')])
增加与修改数据:
1、字典序列[key] = 值
注意:如果key存在则修改这个key对应的值;如果key不存在,则新增此键值对。
"""当字典中的键不存在时,会重新赋值,相当于新增"""
dict_1 = {'name': '崔东山', 'age': '30', '爱好': '围棋'}
dict_1['gender'] = '男'
print(dict_1) # {'name': '崔东山', 'age': '30', '爱好': '围棋', 'gender': '男'}
"""字典的修改"""
dict_1 = {'name': '崔东山', 'age': '30', '爱好': '围棋'}
dict_1['name'] = '朱敛'
print(dict_1) # {'name': '朱敛', 'age': '30', '爱好': '围棋'}
2、update():添加键值对
此方法可以将另一个字典全部添加到当前字典中。若2个字典中存在相同的“键”,则以另一个字典中的“值”为准,对当前字典进行更新。
dict_2 = {'ranking': [98, 97], 'age': 24, 'name': '陈暖树', 'gender': '男'}
"""字典中的"值",可以时列表、数字、字符串、元组等等"""
"""字典中的"键",不能使用列表、集合、字典等可变数据类型,作为字典中的键"""
"""字典的增加:update()"""
dict_2.update({'a': 'b', 'c': 'd'})
print(dict_2)
# {'ranking': [98, 97], 'age': 24, 'name': '陈暖树', 'gender': '男', 'a': 'b', 'c': 'd'}
删除数据:
del:删除字典或删除字典中指定键值对。
"""字典的删除:del"""
dict_3 = {'ranking': [98, 97], 'age': 24, 'name': '陈暖树', 'gender': '男', 'a': 'b', 'b': 'b'}
del dict_3['ranking']
print(dict_3)
clear():清空字典
"""字典的清空:clear()"""
dict_2.clear()
print(dict_2) # {}
pop():删除并返回指定“键”的元素
"""字典的删除:pop()"""
dict_2.pop('name')
print(dict_2) # {'ranking': [98, 97], 'age': 24, 'gender': '男', 'a': 'b', 'b': 'b', (5, 6): 'aaa'}
dict_2.pop('id')
# print(dict_2) # 删除不存在的键时,报错
for循环遍历字典:
1、遍历字典中的key:
"""遍历字典中的key"""
dict1 = {'name': '崔东山', 'age': '18', 'gender': 'man'}
for iKey in dict1.keys():
print(iKey)
2、遍历字典的value:
"""遍历字典中的value"""
for iValue in dict1.values():
print(iValue)
3、遍历字典的元素:
"""遍历字典中的key和value"""
for result in dict1.items():
print(result)