1. 定义与特性
1.1 定义
字典是Python语言中唯一的映射类型。
定义:{key1:value1,key2:value2}
- 键与值用冒号
:
分开; - 项与项用逗号
,
分开;
1.2 特性
- key-value结构
- key必须可hash、且必须为不可变数据类型、必须唯一
- 可存放任意多个值、可修改、可不唯一
- 无序(区分有序字典)
2. 字典的创建
# 方式一:
person01 = {"name":"Tom",'age':20}
# 方式二:
person02 = dict(name='Vincent',age=18)
# 方式三:
person03 = dict({"name":"Jack",'age':16})
# 方式四:
person04 = dict((['name','小明'],['年龄',14]))
print(person01) # {'age': 20, 'name': 'Tom'}
print(person02) # {'age': 18, 'name': 'Vincent'}
print(person03) # {'age': 16, 'name': 'Jack'}
print(person04) # {'年龄': 14, 'name': '小明'}
# 方式五:
# 通过字典的fromkeys方法初始化一个字典,详细见下面内容
3. 字典的常用方法
常用方法列表
操作/方法 | 作用 | 语法 |
---|---|---|
fromkeys | 创建一个新字典,以序列seq中的元素做字典的建,value为字典所有键对应的初始值 | dict.fromkeys(seq,value) |
keys() | 返回一个包含字典所有key的列表 | dic.keys() |
values() | 返回一个包含字典所有value的列表 | dic.values() |
items() | 返回一个包含所有(key,value)元组的列表 | dic.items() |
dic[new_key] = new_value | 新增key:value | dic[new_key] = new_value |
setdefault | 新增kv,如果字典中不存在key键,由dic[key] = default为它赋值,默认为None | dic.setdefault(k, d=None) |
pop | 如果字典中存在key,删除并返回key对应的value;如果key不存在,且没有给出default值,则引发keyerror异常 | dic.pop(key[,default]) |
clear | 删除字典中所有的项和元素 | dic.clear() |
update | 将字典dic2的键值添加到字典dic1中 | dic1.update(dic2) |
dic[key] | 获取字典中某key的value值,若key不存在字典中,则报KeyError错 | dic[key] |
get | 返回字典中key对应的值,若key不在字典中,则返回定义的default值;default默认为 None | dic.get(key,default=None) |
常用操作/方法介绍
# 字典的常用操作与方法
# 1.fromkeys
# 作用:用于创建一个新字典,以序列seq中的元素做字典的建,value为字典所有键对应的初始值
# 返回值:一个新字典
# 语法:dict.fromkeys(seq,value)
# 参数说明:
# seq:一个序列,字典的键
# value:可选参数,设置键对应的值;若不写,则值为None
seq = ('num1','num2','num3','num4')
ret11 = {}.fromkeys(seq,100)
ret12 = {}.fromkeys(seq,)
print('ret11:',ret11)
print('ret12:',ret12)
# 2.获取/查看键、值、键值对
# 2.1 dic.keys() 返回一个包含字典所有key的列表
# 2.2 dic.values() 返回一个包含字典所有value的列表
# 2.3 dic.items() 返回一个包含所有(key,value)元组的列表
dic = {'name':'Tom','age':12,'gender':'male','Country':'CN'}
ret21 = dic.keys()
ret22 = dic.values()
ret23 = dic.items()
print('ret21:',ret21)
print('ret22:',ret22)
print('ret23:',ret23)
# 3.新增
# 3.1 dic[new_key] = new_value
dic = {'name':'Jack','age':14}
dic['gender'] = '男'
print('ret31:',dic)
#3.2 setdefault
# 如果字典中不存在key键,由dic[key] = default为它赋值,默认为None
# dic.setdefault(k, d=None)
dic = {'name':'Vincent','age':15}
dic.setdefault('name','小明')
dic.setdefault('gender')
dic.setdefault('class','三年八班')
print('ret32:',dic)
# 4.删除
# 4.1 pop
# 和get方法相似,如果字典中存在key,删除并返回key对应的value;如果key不存在,且没有给出default值,则引发keyerror异常
# dic.pop(key[,default])
dic = {'name':'Lily','age':18}
ret41 = dic.pop('name')
print('ret41:',ret41)
# 4.2 clear
# 删除字典中所有的项和元素
# dic.clear()
dic = {'name':'Lily','age':18}
dic.clear()
print('ret42:',dic)
# 5.修改
# 5.1 dic[key] = new_value
# 如果key存在,则其值替换为new_value
dic = {'name':'Lily','age':18}
dic['age'] = 28
print('ret51:',dic)
# 5.2 update
# 将字典dic2的键值添加到字典dic1中,若dic2中某key在dic1中已存在,则更新dic1中key对应的value值
# dic1.update(dic2)
dic1 = {'name':'Tom','age':15}
dic2 = {'age':17,'gender':'男'}
dic1.update(dic2)
print('ret52',dic1)
# 6.查看
# 6.1 dic[key]
# 返回字典中key对应的值,若key不存在字典中,则报KeyError错
dic = {'name':'Tom','age':18}
ret61 = dic['name']
print('ret61',ret61)
# 6.2 get
# dic.get(key,default=None)
# 返回字典中key对应的值,若key不在字典中,则返回定义的default值;default默认为 None
dic = {'name':'Tony','age':18}
ret62 = dic.get('name')
ret63 = dic.get('aaa')
ret64 = dic.get('bbb',"forTest")
print('ret62:',ret62)
print('ret63:',ret63)
print('ret64:',ret64)
打印输出结果
'''
ret11: {'num3': 100, 'num1': 100, 'num4': 100, 'num2': 100}
ret12: {'num3': None, 'num1': None, 'num4': None, 'num2': None}
ret21: dict_keys(['age', 'Country', 'name', 'gender'])
ret22: dict_values([12, 'CN', 'Tom', 'male'])
ret23: dict_items([('age', 12), ('Country', 'CN'), ('name', 'Tom'), ('gender', 'male')])
ret31: {'age': 14, 'name': 'Jack', 'gender': '男'}
ret32: {'age': 15, 'class': '三年八班', 'name': 'Vincent', 'gender': None}
ret41: Lily
ret42: {}
ret51: {'age': 28, 'name': 'Lily'}
ret52 {'age': 17, 'name': 'Tom', 'gender': '男'}
ret61 Tom
ret62: Tony
ret63: None
ret64: forTest
'''