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 中
posted @ 2022-02-05 17:28  Only(AR)  阅读(72)  评论(0)    收藏  举报