Python中的字典

1. 字典概念

Python内置的数据结构之一,与列表一样是一个可变序列。

以键值对的方式存储数据,字典是一个无序的序列。(列表是有序的)

 

字典通过计算key的hash值确定存储位置,所以key应为不可变序列(字符串,整数等)

2. 字典原理

Python中的字典根据key,通过hash函数,计算出存储位置,找到value

3. 字典的创建

"""字典的创建方式"""
'''使用{}创建字典'''
scores = {'张三': 100, '李四': 98, '王五': 45}
print(scores)
print(type(scores))

'''第二种创建dict()'''
student = dict(name='jack', age=20)
print(student)

'''空字典'''
d = {}
print(d)
4. 字典元素的获取

"""获取字典的元素"""
scores = {'张三': 100, '李四': 98, '王五': 45}
'''第一种方式,使用[]'''
print(scores['张三'])
# print(scores['陈六']) # KeyError: '陈六'

'''第二种方式,使用get()方法'''
print(scores.get('张三'))
print(scores.get('陈六')) # None
print(scores.get('赵七', 99)) # 99是在查找'赵七'所对应的value不存在时,提供的一个默认值
5. 字典的常用操作

"""字典元素的增删改操作"""
'''key的判断'''
scores = {'张三': 100, '李四': 98, '王五': 45}
print('张三' in scores)
print('张三' not in scores)

del scores['张三'] # 删除指定的key-value对
# scores.clear() # 清空字典的元素
print(scores)
scores['陈六'] = 98 # 新增元素
print(scores)

scores['陈六'] = 100 # 修改元素
print(scores)
"""获取字典视图"""
scores = {'张三': 100, '李四': 98, '王五': 45}
# 获取所有的key
keys = scores.keys()
print(keys)
print(type(keys))
print(list(keys)) # 将所有的key组成的视图转成列表

# 获取所有的value
values = scores.values()
print(values)
print(type(values))
print(list(values))

# 获取所有的key-value对
items = scores.items()
print(items)
print(list(items)) # 转化之后的列表元素是由 元组 组成
6. 字典元素的遍历

scores = {'张三': 100, '李四': 98, '王五': 45}
# 字典元素的遍历
for item in scores:
print(item, scores[item], scores.get(item))
7. 字典的特点

字典中的所有元素都是一个 key-value对,key不允许重复,value可以重复

字典中的元素是无序的

字典中的key必须是不可变对象

lst = [10, 20, 30]
d = {lst: 100}
print(d) # TypeError: unhashable type: 'list'
字典也可以根据需要动态地伸缩

字典会浪费较大的内存,是一种使用空间换时间的数据结构

8. 字典生成式

items = ['Fruits', 'Books', 'Others']
prices = [96, 78, 85]
d = {item: price for item, price in zip(items, prices)}
print(d)

items = ['Fruits', 'Books', 'Others']
prices = [96, 78, 85, 100, 120]
d = {item.upper(): price for item, price in zip(items, prices)}
print(d)
原文链接:https://blog.csdn.net/m0_54806019/article/details/123718569

posted @   testcodell  阅读(147)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示