22.字典

发布时间 2023-11-11 17:56:16作者: 想要暴富的小男孩

字典

字典是Python中的一种容器数据类型,用于存储键值对(key-value)的数据集合。

和现实生活中的字典类似,通过一个 key 对应一个确定唯一的值。

字典是无序的,可变的,且可以存储任意类型的元素

字典的定义

Python 中使用花括号,保存key-value形式表示字典。

key-value 中的 key 必须是一个可哈希的对象,可以使用 hash() 函数来判断数据是否可哈希。 简单理解在一次程序运行结束前,无论该数据什么时候执行hash()函数,都能得到一个唯一确定的值。 一般情况下,不可变对象数据,都可以得到一个哈希值。 所以,理论上,pyhton中的不可变对象数据都可以做为key使用。 但是,为了方便使用,大多数情况下,都会使用字符串类型数据做为key使用。

# 在一次程序运行过程中,hash函数得会得到同一个哈希值
print(hash("ab"))
print(hash("ab"))
print(hash("ab"))

def myhash():
print(hash("ab"))

myhash()

# 可哈希数据
print(hash(123))
print(hash("abc"))
print(hash((1,2,3)))

# 不可哈希数据
print(hash([1,2,3]))
print(hash((1,2,[3])))

字典的创建

字面量定义字典

d1 = {}
d2 = {"name": "Alice", "age": 25, "gender": "female"}

构造方法定义字典

Python 中使用构造方法定义字典的形式很多,了解即可

d1 = dict(one=1, two=2, three=3)
d2 = dict([('two', 2), ('one', 1), ('three', 3)])
d3 = dict((('two', 2), ('one', 1), ('three', 3)))
d4 = dict([('two', 2), ['one', 1], ('three', 3)])
d5 = dict({'one': 1, 'two': 2, 'three': 3})
d6 = dict({'one': 1, 'three': 3}, two=2)
d7 = dict(zip(['one', 'two', 'three'], [1, 2, 3]))

字典数据访问

字典类型没有类似元组,列表那样的数字下标索引。字典使用 key 来获取对应的值,使用 key的方式同下标索引一样,也使用中括号的方式,将元组,列表中的数字下标索引替换为key。 可以简单将key理解成为自定义的下标索引。

格式:字典对象[key]

stu = {"name":"Tom", "age": 23, "gender":"male"}
print(stu["name"])
print(stu["age"])
k = "gender"
print(stu[k])

字典元素添加与修改

字典中的每一个元素都以键值对形式表示,一个key对应一个value, 在一个字典中,key具有唯一性,当给一个key赋值时,如果key在当前字典中不存在,则是添加数据,如果key存在,则对当前key所对应的值进行修改更新。

格式: 字典对象[key] = value

stu = {"name":"Tom", "age": 23, "gender":"male"}
print(stu)
# 添加新元素
stu["address"] = "BeiJing"
print(stu)
# 修改数据
stu["name"] = "Jack"
stu["address"] = "ShangHai"
print(stu)

字典元素的删除

字典也可以使用 del 通过key删除元素,当删除元素时,整个键值对都会被删除。

格式:del 字典对象[key]

stu = {'name': 'Tom', 'age': 23, 'gender': 'male', 'address': 'BeiJing'}
print(stu)
# 删除元素
del stu['age']
print(stu)
del stu['address']
print(stu)

字典的有序性(Python 3.7+)

在Python 3.7及更高版本中,字典被认为是有序的,即它们可以保持键值对的添加顺序。这意味着当遍历字典或打印字典时,键值对的顺序与它们添加到字典中的顺序相同。这种有序性是字典的内置特性,不需要额外的操作。

然而,在Python 3.6及更早版本中,字典是无序的,无法保持键值对的顺序。这意味着当遍历字典或打印字典时,键值对的顺序是不确定的,可能与它们添加到字典中的顺序不同。

因此,如果在编程中需要依赖字典键值对的顺序,建议使用Python 3.7及更高版本以确保有序性。如果使用旧版本的Python,可以考虑使用collections.OrderedDict来实现有序字典的功能。

字典的应用场景

  • 字典适用于存储具有相关性的数据,如用户信息、学生成绩等。每个键值对表示一个独立的数据项,通过键来关联对应的值。
  • 字典提供了快速查找和访问数据的能力,通过键可以直接定位对应的值,而不需要遍历整个字典。这使得字典在需要根据特定键快速获取对应值的场景下非常有用。
  • 字典作为数据的容器,提供了丰富的操作方法,可以方便地进行遍历、搜索、插入和删除操作。可以通过循环遍历字典的键或值,通过键进行搜索和更新数据,通过键值对的添加和删除来动态修改字典的内容。这种灵活性使得字典成为处理各种数据结构的重要工具。