【Python】字典及其常用方法

176 阅读3分钟

字典(Dictionary)是Python提供的一种常用的数据结构。

由键(key)和值(value)成对组成,键和值中间以冒号:隔开,项与项之间用逗号隔开,整个字典由大括号{}括起来。

特点:
  1. 符号为大括号{};
  2. 数据是以键值对的形式出现;
  3. 各个键值对之间用逗号隔开;
  4. 每个键是唯一的,值可以不是唯一;
  5. 字典中的数据与数据的顺序没有关系,即字典不支持下标(索引);
  6. 字符串、数值、元组,都可以作为键(必须是不可变的数据类型);

创建方法:

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)