目录
字典:
Python内置的数据结构之一,与列表一样是一个可变序列
以键值对的方式存储数据,字典是一个无序的序列
一、字典的创建
字典的实现原理:
字典的实现原理类似于生活中的查字典,查字典是根据部首的首部或者拼音进行查找,而Python中的字典是根据key查找value所在的位置。
字典的创建:
通过score( )进行创建
通过内置函数dict()进行创建
示例:
# 字典创建,第一种方式
print('---------score()------------')
score = {'张三': 89, '李四': 78, '王五': 90}
print(score)
print(type(score))
# 字典创建,第二种方式
print('----------dict()------------')
student = dict(name='张三', age=14)
print(student)
print(type(student))
运行结果:
二、字典的特点
- 字典中所有元素都是一个键值对,即key_value,key不允许重复,value可以重复
- 字典中的元素是无序的
- 字典中的key必需是不可变对象
- 字典也可以根据需要动态的进行伸缩
- 字典会浪费一个较大内存,是一种使用空间换时间的操作
示例:
d = {'name': '张三', 'name': '李四'} # 该字典中的key重复
print(d)
c = {'name': '张三', 'nickname': '李四'} # 该字典中的key不重复
print(c)
运行结果:
三、查询字典中元素
(1)字典元素的获取
字典元素的获取通常有两种方式:
- 采用[ ]去获取元素
- 采用get()函数去获取元素,当所查找的元素不存在时,运行结果会返回None。当然也可以获取默认值
示例:
score = {'张三': 89, '李四': 78, '王五': 90}
print('--------第一种获取元素值的方法,[]----------')
print(score['张三'])
# print(score['小明']) # 此时会报错,该元素不存在
print('---------第二种获取元素的方法,get()--------')
print(score.get('李四'))
print(score.get('小明')) # 查找该元素
print(score.get('小明', 99)) # 不存在给元素时,输出默认值
运行结果:
(2)字典元素的判断
用 in 或not in判断元素是否在字典中
示例:
scores = {'张三': 89, '李四': 78, '王五': 90}
print('----------判断-----------')
print('张三' in scores)
print('张三' not in scores)
运行结果:
(3)字典元素的遍历
用for in进行字典元素的遍历
示例:
scores = {'张三': 89, '李四': 78, '王五': 90, '小明': 43}
for item in scores: # 字典中键的遍历
print(item)
for item in scores: # 字典元素中值的遍历,先获取值,然后进行值的遍历
print(scores[item])
for item in scores: # 字典中键值对的遍历
print(item, scores.get(item))
运行结果:
四、字典元素的增、删、改操作
(1)字典元素的增加
语法结构:
字典名[键]=值
示例:
scores = {'张三': 89, '李四': 78, '王五': 90}
print('----------增加-----------')
scores['小明'] = 39 # 可以增加单个键值对
print(scores)
运行结果:
(2)字典元素的删除
语法结构:
删除:
del 字典名[键]
清除:
字典名.clear()
示例:
scores = {'张三': 89, '李四': 78, '王五': 90}
print('-----------删除----------')
del scores['李四']
print(scores)
print('-----------清除----------')
scores.clear()
print(scores)
运行结果:
(3)字典元素的修改
语法结构:
字典名[键] = 值
示例:
scores = {'张三': 89, '李四': 78, '王五': 90, '小明':36}
print('-----------修改----------') # 可以对指定的元素进行修改
scores['小明'] = 42
print(scores)
运行结果:
(4)获取字典视图
- keys(),是获取所有的键
- values(),是获取所有的值
- items(),是获取所有的键值对
示例:
scores = {'张三': 89, '李四': 78, '王五': 90, '小明': 43}
print('----------keys()----------')
keys = scores.keys()
print(keys)
print(type(keys))
print(list(keys)) # 将其转换为列表
print('-----------values()-------')
values = scores.values()
print(values)
print(type(values))
print(list(values))
print('------------items()--------')
items = scores.items()
print(items)
print(type(items))
print(list(items)) # 转换之后的列表元素是由元组组成的
运行结果:
五、字典生成式
字典生成式即生成字典的公式
使用内置函数zip( )
示例:
# 三种情况
# 第一种:
items = ['Fruit', 'Books', 'Others']
prices = [12, 13, 14]
d = {item: price for item, price in zip(items, prices)}
print(d)
# 第二种
c = {item.upper(): price for item, price in zip(items, prices)} # 利用upper()函数将items中的键变为大写
print(c)
# 第三种:当两个列表中元素的数量不相等时,选择最小的进行压缩匹配对应生成
items = ['Fruit', 'Books', 'Others']
prices = [13, 14, 15, 16, 18, 19]
a = {item: price for item, price in zip(items, prices)}
print(a)
运行结果: