Python dict() 函数

Python dict() 语法

dict() 是 Python 的一个内置函数,它用于创建一个 字典。dict() 函数提供了 3 种创建字典的方式。

  • 如果只有关键字参数,则根据关键字参数及其值创建字典。
  • 如果第一个参数是映射对象(如字典),则会根据该字典以及后面的关键字参数 “组合” 来创建字典。
  • 如果第一个参数是可迭代对象,则会根据该可迭代对象以及后面的关键字参数 “组合” 来创建字典。

语法:

dict(**kwargs)
dict(mapping, **kwargs)
dict(iterable, **kwargs)

说明:

dict() 函数有 3 种语法格式,参数说明如下。

  • **kwargs(可选):它是关键字参数。比如 dict( a = 1, b = 2 ) 就使用了关键字参数。关于关键字参数是什么,另请参阅:Python 函数参数
  • mapping(可选):它是另一个字典。比如 dict( { 'c': 3 } , a = 1, b = 2 )。当 mapping 与关键字参数存在重复键时,关键字参数的值会覆盖映射中的值。
  • iterable(可选):它是一个可迭代对象。但并非所有可迭代对象都可用于 dict()。只有类似二维列表的可迭代对象才可以,比如 [ (1, "red"), (2, "blue"), (3, "green") ]、[ [1, "red"], [2, "blue"], [3, "green"] ] 等。

与直接使用花括号 “{}” 语法相比,dict() 提供了更灵活的字典创建方式,尤其是在需要从其他数据结构转换时。

注意:

  • dict() 总是创建一个新的字典对象。
  • 字典的键必须是可哈希的对象(比如数字、字符串、元组),而值可以是任何类型的对象。
  • 可迭代对象的元素必须是 (key, value) 形式的二维结构,否则会引发 ValueError 异常。

Python dict() 摘要

使用频率
官方文档 查看
相关函数 set()

Python dict() 示例

接下来,我们通过几个简单的例子来讲解一下 Python dict() 函数是如何使用的。

示例 1:dict() 创建空字典

d = dict()
print(d)

运行结果如下。

{}

分析:

想要创建一个空字典,其实有以下 2 种方式。

# 方式 1
d = dict()

# 方式 2(推荐)
d = {}

示例 2:dict(**kwargs)

result = dict(a=1, b=2, c=3)
print(result)

运行结果如下。

{'a': 1, 'b': 2, 'c': 3}

示例 3:dict(mapping, **kwargs)

result = dict({'d': 4}, a=1, b=2, c=3)
print(result)

运行结果如下。

{'d': 4, 'a': 1, 'b': 2, 'c': 3}

示例 4:dict(iterable, **kwargs)

result = dict([(4, 'red'), (5, 'green'), (6, 'blue')], a=1, b=2, c=3)
print(result)

运行结果如下。

{4: 'red', 5: 'green', 6: 'blue', 'a': 1, 'b': 2, 'c': 3}

分析:

除了创建字典对象之外,dict() 还可以将其他类型对象转换为字典对象。请看下面例子。

示例 5:dict() 将 “其他可迭代对象” 转换为字典

items = [('a', 1), ('b', 2), ('c', 3)]
d = dict(items)
print(d)

运行结果如下。

{'a': 1, 'b': 2, 'c': 3}

分析:

如果传入一个可迭代对象,该对象每个元素都是长度为 2 的列表或元组,那么 dict() 函数会将每个列表或元组的第 1 个元素作为键,第 2 个元素作为值,然后去生成一个字典对象。

# 错误案例(元素长度不符)
try:
    dict([(1,2,3)])    # 引发 ValueError
except ValueError as e:
    print(e)

dict() 最佳实践

虽然 dict() 函数提供了多种创建字典的方式,但在实际编程中,我们通常会结合它的不同用法和更简洁的语法来达到最佳效果。

1. 优先使用 “{}” 创建字典

如果只是单纯想创建一个字典,我们更推荐使用大括号 “{}” 的方式。这种方式比使用 dict() 函数更简单方便。下面两种写法是等价的:

# 使用 “{}”(推荐)
students = {'Jack': 1001, 'Lucy': 1002, 'Tony': 1003}

# 使用 dict()
students = dict(Jack=1001, Lucy=1002, Tony=1003)

2. 动态合并字典

当需要合并多个数据源时,使用 dict() 会比 “{}” 更加灵活。

base_config = {'timeout': 30}
user_config = dict(base_config, retries=3, debug=True)
print(user_config)       # 输出 : {'timeout': 30, 'retries': 3, 'debug': True}

3. 初始化默认值

我们可以使用 dict.fromkeys() 方法来初始化默认值。

# 所有键共享同一个默认值(需注意可变对象问题)
keys = ['a', 'b', 'c']
default_dict = dict.fromkeys(keys, 0)
print(default_dict)    # 输出 : {'a': 0, 'b': 0, 'c': 0}

常见问题

1. 为什么 dict( key = value ) 中的 “键” 不能是数字或表达式?

对于关键字参数来说,它的语法要求 “键” 必须是有效的标识符(如字母开头)。数字或表达式需要通过其他方式,比如:

d = dict([('1', 'one'), (2, 'two')])    # 正确

上一篇: tuple()

下一篇: set()

给站长反馈

绿叶网正在不断完善中,小伙伴们如果发现任何问题,还望多多给站长反馈,谢谢!

邮箱:lvyenet@vip.qq.com

「绿叶网」服务号
绿叶网服务号放大
关注服务号,微信也能看教程。
绿叶网服务号