python 工具

Python 字典(Dict)

  • 字典和字符串、列表、元组不同,不是序列,而是一种映射,通过键值对而不是相对位置来存储
  • 通过大括号{}定义
  • 语法:变量名 = 字典常量/字典类型变量
  • 键和值用冒号:分割,键值对直接用逗号分隔
  • 键必须是唯一的,但值可以重复
  • 值可以是任何数据类型,键只能必须是不可变类型(数字、字符串、元组(不常用))
dict1 = {'姓名': '小明', '年龄': 18, '性别': '男', 1: 1, 2: 2}
dict2 = dict1

# 创建空字典
dict3 = {}
dict3 = dict()

# 创建字典时如果有重复键值,后一个值会被记住
dict4 = {'姓名': '小明', '姓名': '小红'} # {姓名': '小红'}

1. 查询字典元素

dict1 = {'姓名': '小明', '年龄': 18, '性别': '男','1': '你好', 1: 1, 2: 2}

# 与列表和元组相似,通过中括号来查询。不同的是,中括号里的是键值而不是偏移量
# 注意 '1' 和 1 是不同的值
dict1['姓名']	# '小明'
dict1[1]	# 1
dict1['1']	# '你好'

# 如果用字典里没有的键访问数据,会报错
dict1[3]	# 报错

# get(key, default=None)
# 当键不存在时,也会返回一个值,默认为None,可以通过第二个参数设置
dict1.get('性别')		# '男'
dict1.get('班级')		# None
dict1.get('班级', '2班')		# '2班'

# setdefault(key, default=None)
# 如果键不存在于字典中,将会添加键并将值设为default
dict1.setdefault('性别')		# '男'
dict1.setdefault('班级', '2班')		# '2班',dict1 = {'姓名': '小明', '年龄': 18, '性别': '男', '1': '你好', 1: 1, 2: 2, '班级': '2班'}

2. 修改字典元素

# 通过键修改/添加元素
# 如果键存在,则会更新对应的值,如果键不存在,则添加一组新的键值对
dict2 = {'姓名': '小明', '年龄': 18, '性别': '男'}

dict2['年龄'] = 20	        # {'姓名': '小明', '年龄': 20, '性别': '男'}
dict2['学校'] = '第一小学'	# {'姓名': '小明', '年龄': 20, '性别': '男','学校': '第一小学'}

# update(newDict)	用新字典的键值对更新原字典的键值对,如果有重复的键,那么值会被更新
dict3 = {1: 2, 3: 4}
dict4 = {1: 3, 4: 5}
dict3.update(dict4)		# dtct3 = {1: 3, 3: 4, 4: 5}

3. 删除字典元素

dict3 = {'姓名': '小明', '年龄': 18, '性别': '男'}

# 使用del
del dict3['性别']		# {'姓名': '小明', '年龄': 18}
del dict3	# 删除元组,之后调用dict3会报错

# 清空字典
dict3.clear()	# {}

4. 字典常用函数

序号 函数 描述
1 dict.clear() 删除字典内所有元素
2 dict.copy() 返回一个字典的浅复制
3 dict.fromkeys() 创建一个新字典,以序列seq中元素做字典的键,val为字典所有键对应的初始值
4 dict.get(key, default=None) 返回指定键的值,如果键不在字典中返回 default 设置的默认值
5 dict.items() 以列表返回一个视图对象
6 dict.values() 返回键的视图对象
7 dict.keys() 返回值视图对象
8 dict.get(key, default=None) 获取键对应的值,如果不存在则返回第二个参数,默认为None
9 dict.setdefault(key, default=None) 和get()类似, 但如果键不存在于字典中,将会添加键并将值设为default
10 dict.update(dict2) 把字典dict2的键/值对更新到dict里
11 dict.pop(key[,default]) 删除字典 key(键)所对应的值,返回被删除的值
12 dict.popitem() 返回并删除字典中的最后一对键和值
13 value in dict 如果value在键里返回True,否则返回False