前言:

在Python编程中,字典(dictionary)是一种强大且灵活的数据结构,用于存储键值对(key-value pairs)。每个键都是唯一的,而每个值则可以是任何类型的数据,包括数字、字符串、列表甚至是另一个字典。字典提供了一种高效的方式来组织和访问数据,是Python中最常用且最重要的内置数据类型之一。

一、字典

1、字典的定义

字典由一对对的大括号{}包围,内部包含多个键值对。每个键值对之间用逗号,分隔,键(key)和值(value)之间用冒号:分隔。例如:

my_dict = {
    "name": "Alice",
    "age": 30,
    "city": "New York"
}

2、字典的特性

  • 无序性:Python中的字典是无序的,这意味着你不能保证遍历字典时元素的顺序与插入顺序一致。然而,从Python 3.7开始,字典是按照插入顺序进行遍历的,这是一个实现细节,但在Python 3.7及以后的版本中得到了保证。

  • 键的唯一性:字典中的键必须是唯一的,但值可以重复。如果尝试添加具有相同键的键值对,后添加的值会覆盖之前的值。

  • 可变性:字典是可变的,这意味着你可以在创建后添加、修改或删除键值对。

  • 键的类型:键可以是任何不可变类型,如字符串、数字或元组,但不能是列表、集合或字典等可变类型。

3、字典的操作

  • 访问值:通过键来访问对应的值。

    print(my_dict["name"])  # 输出: Alice
    
  • 添加键值对:直接向字典中添加新的键值对,如果键已存在,则更新其值。

    my_dict["occupation"] = "Engineer"
    
  • 修改值:通过键来修改对应的值。

    my_dict["age"] = 31
    
  • 删除键值对:使用del语句或pop()方法删除键值对。

    del my_dict["city"]
    occupation = my_dict.pop("occupation")  # 返回值的同时删除键值对
    
  • 检查键或值是否存在:使用in关键字检查键是否存在于字典中,使用values()方法获取所有值并检查某个值是否存在。

    if "name" in my_dict:
        print("Name exists")
    
    if "Engineer" in my_dict.values():
        print("Engineer is a value in the dictionary")
    
  • 遍历字典:可以遍历字典的键、值或键值对。

    # 遍历键
    for key in my_dict:
        print(key)
    
    # 遍历值
    for value in my_dict.values():
        print(value)
    
    # 遍历键值对
    for key, value in my_dict.items():
        print(key, value)
    
  • 字典的合并:Python 3.9引入了字典合并运算符||=,允许轻松合并两个字典。

    dict1 = {"a": 1, "b": 2}
    dict2 = {"b": 3, "c": 4}
    merged_dict = dict1 | dict2  # {'a': 1, 'b': 3, 'c': 4}
    dict1 |= dict2  # 直接修改dict1,结果为 {'a': 1, 'b': 3, 'c': 4}
    

注意: 通过键来访问字典中的值。如果键不存在,会抛出 KeyError 异常。为了避免这种错误,可以使用 get() 方法,该方法允许为不存在的键提供一个默认值。

print(my_dict['name'])  # 输出: Alice
print(my_dict.get('age', 0))  # 输出: 30
print(my_dict.get('gender', 'Not specified'))  # 输出: Not specified

4、字典的常用方法

  • clear(): 清空字典中的所有键值对。
  • copy(): 返回字典的一个浅拷贝。
  • fromkeys(): 创建一个新字典,以序列seq中元素做字典的键,value为字典所有键对应的初始值。
  • get(key, default=None): 返回指定键的值,如果键不存在则返回默认值。
  • keys(): 返回一个包含字典所有键的视图对象。
  • values(): 返回一个包含字典所有值的视图对象。
  • items(): 返回一个包含字典所有键值对的视图对象。
  • popitem(): 移除并返回字典中的最后一个键值对(Python 3.7+ 保证按插入顺序)。
  • setdefault(key, default=None): 如果键不存在于字典中,则设置键值对并返回其值;如果键已存在,则返回其值但不更改。
  • update(other): 用另一个字典或可迭代对象更新当前字典。

5、总结

Python的字典类型以其灵活性和强大的功能,成为处理键值对数据时的首选数据结构。无论是简单的数据存储,还是复杂的映射关系处理,字典都能提供高效且直观的解决方案。掌握字典的用法,对于编写高效、可维护的Python代码至关重要。

Logo

GitCode 天启AI是一款由 GitCode 团队打造的智能助手,基于先进的LLM(大语言模型)与多智能体 Agent 技术构建,致力于为用户提供高效、智能、多模态的创作与开发支持。它不仅支持自然语言对话,还具备处理文件、生成 PPT、撰写分析报告、开发 Web 应用等多项能力,真正做到“一句话,让 Al帮你完成复杂任务”。

更多推荐