共计 1452 个字符,预计需要花费 4 分钟才能阅读完成。
字典
Python 内置的数据结构之一,与列表一样是一个可变序列
# 以键值对形式存储数据,无序序列
students = {
'a': 100,
'b': 90,
'c': 75
}
- students: 字典名;
- 冒号前为键 key,后为值 value。
- 依据 key 查找 value 地位,通过 hash(key) 计算;hash(key) 为不可变序列(不反对增删改,如字符串和数字)
字典的特点
- 所有元素都是键值对,key 不可反复,value 无限度
- 字典中元素是无序的
- key 必须是不可变对象(如字符串、数字)
- 可动静的伸缩
- 节约较大的内存,查问速度快,应用空间换工夫的数据结构
创立形式
# 1. 应用 {}
s = {'1': 1, '2': 2, '3': 3}
# 2. 应用内置函数
x = dict(name='1', age=22)
# 空字典
y = {}
字典的罕用操作
# 1. 获取字典中的元素,应用 []/get()
print(s['1']) # 1
# print(s['11']) # key 不存在时,抛出 KeyError: '11'
print(s.get('2')) # 2
print(s.get('22')) # key 不存在时,输入 None
print(s.get('22', 222)) # key 不存在时,222 为提供的默认值,后果输入 222
# 2. 判断 key 是否存在在字典中,in/not in
x1 = dict(name='1', age=22)
print('name' in x1) # True
print('name' not in x1) # False
# 3. 删除字典中指定的键值对
del x1['name']
# 4. 清空字典
x1.clear()
# 5. 减少键值对
x1['333'] = 222
print(x1) # {'333': 222}
# 6. 批改键值对
x1['333'] = 333
print(x1) # {'333': 333}
字典的视图操作
# 1.keys(): 获取字典所有的 key
s1 = {'1': 1, '2': 2, '3': 3}
print(s1.keys()) # dict_keys(['1', '2', '3'])
print(list(s1.keys())) # ['1', '2', '3'];将 key 的视图转成列表
# 2.values(): 获取字典所有的 values
print(s1.values()) # dict_values([1, 2, 3])
print(list(s1.values())) # [1, 2, 3];将 values 的视图转成列表
# 3.items(): 获取字典所有的键值对
print(s1.items()) # dict_items([('1', 1), ('2', 2), ('3', 3)])
print(list(s1.items())) # [('1', 1), ('2', 2), ('3', 3)];将 items 的视图转成列表,由元组组成
字典元素的遍历
s2 = {'one': 1, 'two': 2, 'three': 3}
for item in s2:
print(item)
字典生成式
应用内置函数 zip(): 将对象中对应的元素打包成一个元组,返回由这些元组组成的列表
a = ['张三', '李四', '王五']
b = [21, 22, 23]
print(list(zip(a, b))) # [('张三', 21), ('李四', 22), ('王五', 23)]
# 语法:{key.upper():value for key,value in zip(keys, values)}
print({key.upper(): value for key, value in zip(a, b)}) # {'张三': 21, '李四': 22, '王五': 23}
正文完