Python学习笔记:字典
字典
1 字典的定义
字典是无序的“键 : 值(key:value)”对集合,key 必须是互不相同的(在同一个字典之内)。
dict内部存放的顺序和key放入的顺序是没有关系的。dict查找和插入的速度极快,不会随着key的增加而增加,但是需要占用大量的内存。- key 必须是不可变类型(数值,字符,元组)
2 字典的创建
name = {
'BUAA': '北京航空航天大学',
'THU': '清华大学',
'PKU': '北京大学',
'TJU': '天津大学'
}
print(name['BUAA']) # 北京航空航天大学
print(name['TJU']) # 天津大学
name = dict() # 创建一个空字典
print(name, type(name))
从元组或列表建立字典:
name_list = (
('BUAA', '北京航空航天大学'),
('THU', '清华大学'),
('PKU', '北京大学'),
('TJU', '天津大学')
)
name = dict(name_list)
print(name, type(name))
# {'BUAA': '北京航空航天大学', 'THU': '清华大学', 'PKU': '北京大学', 'TJU': '天津大学'} <class 'dict'>
name_list = [
('BUAA', '北京航空航天大学'),
('THU', '清华大学'),
('PKU', '北京大学'),
('TJU', '天津大学')
]
name = dict(name_list)
print(name, type(name))
# {'BUAA': '北京航空航天大学', 'THU': '清华大学', 'PKU': '北京大学', 'TJU': '天津大学'} <class 'dict'>
以下方法建立字典时,key 只能是字符串,并且不能加引号。
name = dict(
BUAA='北京航空航天大学',
THU='清华大学',
PKU='北京大学',
TJU='天津大学'
)
print(name, type(name))
# {'BUAA': '北京航空航天大学', 'THU': '清华大学', 'PKU': '北京大学', 'TJU': '天津大学'} <class 'dict'>
3 字典的方法
dict.fromkeys(seq[, value])从序列建立字典
为所有的 key 都赋相同的值:
eng_name = ['BUAA', 'THU', 'PKU', 'TJU']
ch_name = None
name = dict.fromkeys(eng_name, ch_name)
print(name, type(name))
# {'BUAA': None, 'THU': None, 'PKU': None, 'TJU': None} <class 'dict'>
dict.keys()
name = {
'BUAA': '北京航空航天大学',
'THU': '清华大学',
'PKU': '北京大学',
'TJU': '天津大学'
}
eng_name = name.keys()
print(eng_name, type(eng_name))
# dict_keys(['BUAA', 'THU', 'PKU', 'TJU']) <class 'dict_keys'>
name_list = list(eng_name)
print(name_list)
# ['BUAA', 'THU', 'PKU', 'TJU']
dict.values()
name = {
'BUAA': '北京航空航天大学',
'THU': '清华大学',
'PKU': '北京大学',
'TJU': '天津大学'
}
eng_name = name.values()
print(eng_name, type(eng_name))
# dict_values(['北京航空航天大学', '清华大学', '北京大学', '天津大学']) <class 'dict_values'>
name_list = list(eng_name)
print(name_list)
# ['北京航空航天大学', '清华大学', '北京大学', '天津大学']
dict.items()
name = {
'BUAA': '北京航空航天大学',
'THU': '清华大学',
'PKU': '北京大学',
'TJU': '天津大学'
}
name_pair = name.items()
print(name_pair, type(name_pair))
# dict_items([('BUAA', '北京航空航天大学'), ('THU', '清华大学'), ('PKU', '北京大学'), ('TJU', '天津大学')]) <class 'dict_items'>
name_tuple = tuple(name_pair)
print(name_tuple)
# (('BUAA', '北京航空航天大学'), ('THU', '清华大学'), ('PKU', '北京大学'), ('TJU', '天津大学'))
name_list = list(name_pair)
print(name_list)
# [('BUAA', '北京航空航天大学'), ('THU', '清华大学'), ('PKU', '北京大学'), ('TJU', '天津大学')]
dict.get(key, default=None)
返回指定 key 的值,如果没有则返回 default
name = {
'BUAA': '北京航空航天大学',
'THU': '清华大学',
'PKU': '北京大学',
'TJU': '天津大学'
}
print(name.get('BUAA')) # 北京航空航天大学
print(name.get('NKU', '不知道')) # 不知道
dict.setdefault(key, default=None)
同样返回 key 的值,如果没有则添加 key: default
name = {
'BUAA': '北京航空航天大学',
'THU': '清华大学',
'PKU': '北京大学',
'TJU': '天津大学'
}
print(name.setdefault('BUAA')) # 北京航空航天大学
print(name.setdefault('NKU', '不知道')) # 不知道
print(name)
# {'BUAA': '北京航空航天大学', 'THU': '清华大学', 'PKU': '北京大学', 'TJU': '天津大学', 'NKU': '不知道'}
in操作符,检查元素是否在 key 中。dict.pop(key[,default])
删除并返回 key 对应的键值对,如果不存在返回 default。default 缺省且删除失败则报错。
name = {
'BUAA': '北京航空航天大学',
'THU': '清华大学',
'PKU': '北京大学',
'TJU': '天津大学'
}
print(name.pop('TJU')) # 天津大学
print(name)
# {'BUAA': '北京航空航天大学', 'THU': '清华大学', 'PKU': '北京大学'}
print(name.pop('NKU', None)) # None
print(name.pop('NKU')) # KeyError: 'NKU'
-
del dict[key]:删除键值对。 -
dict.popitem():随机返回并删除一对键和值。
name = {
'BUAA': '北京航空航天大学',
'THU': '清华大学',
'PKU': '北京大学',
'TJU': '天津大学'
}
while len(name) != 0:
print(name.popitem())
# ('TJU', '天津大学')
# ('PKU', '北京大学')
# ('THU', '清华大学')
# ('BUAA', '北京航空航天大学')
dict.clear()清空一个字典dict.clear()返回一个字典的浅复制dict.update(dict2)将 dict2 的键值对更新到 dict 中

浙公网安备 33010602011771号