在Python中,要创建一个简单的键值对字典,我们通常使用大括号{}来初始化一个字典,然后使用冒号:分隔键和值。但是,当我们需要创建一组相同键名但不同键值(比如初始化一个所有值都为0的字典)时,这种方法就显得非常低效,需要写很多行代码来一个一个地初始化字典项。
幸运的是,Python提供了一个更快速且便利的方法来创建Key-Value字典,即使用dict的fromkeys()方法。使用fromkeys(),我们可以使用一个序列作为键,将其所有的值初始化为一个默认值,从而快速创建一个Key-Value字典。
一、基础用法
在最简单的场景下,使用fromkeys()方法创建一个所有键都被初始化为同一个值的字典非常简单。我们只需要使用fromkeys(序列,默认值)方法即可:
keys = ['key1', 'key2', 'key3'] default_value = 0 d = dict.fromkeys(keys, default_value) print(d) # 输出 {'key1': 0, 'key2': 0, 'key3': 0}
从上面的代码中我们可以看出,我们使用一个列表keys作为fromkeys()的第一个参数,所有的键都被初始化为默认值0。这样,我们就快速创建了一个Key-Value字典。
二、设置不同的默认值
有时候,我们需要某些键使用不同的默认值来初始化字典。在这种情况下,我们可以使用一个字典来指定每个键的默认值,这个字典的键就是原先用作fromkeys()方法参数的序列。
keys = ['key1', 'key2', 'key3'] default_values = {'key1': 0, 'key2': 1, 'key3': 2} d = dict.fromkeys(keys, default_values) print(d) # 输出 {'key1': {'key1': 0, 'key2': 1, 'key3': 2}, 'key2': {'key1': 0, 'key2': 1, 'key3': 2}, 'key3': {'key1': 0, 'key2': 1, 'key3': 2}}
从上面的代码中可以看出,我们使用一个字典default_values来指定每个键的默认值,这个字典的键就是原先用作fromkeys()方法参数的序列。这样,我们就可以创建一个各键都使用不同的默认值的字典。
三、指定不同的默认值生成器
除了使用一个字典来指定不同的默认值外,我们还可以使用一个函数作为默认值生成器,从而按照一定的规则为每个键生成不同的默认值。
keys = ['key1', 'key2', 'key3'] default_values = lambda x: len(x) d = dict.fromkeys(keys, default_values) print(d) # 输出 {'key1': 4, 'key2': 4, 'key3': 4}
从上面的代码中可以看出,我们使用一个函数default_values来作为默认值生成器,这个函数的参数就是序列中的每个键。这样,我们就可以按照自己的规则为每个键生成默认值,从而快速创建一个Key-Value字典。
四、使用生成器表达式
除了以上的方法外,我们还可以使用生成器表达式来代替序列,从而实现更加高效的Key-Value字典创建。
keys = ['key1', 'key2', 'key3'] default_value = 0 d = {k: default_value for k in keys} print(d) # 输出 {'key1': 0, 'key2': 0, 'key3': 0}
从上面的代码中可以看出,我们使用了一个生成器表达式{k: default_value for k in keys}来生成Key-Value字典,相比于fromkeys()方法,这种方法更加高效。
五、结论
在本文中,我们通过以上多种方式阐述了如何使用Python的dict from keys方法快速创建Key-Value字典。无论是在初始化所有键都为同一个值的字典,还是在一些特殊场景下指定不同的默认值,我们都可以使用fromkeys()方法来简化我们的代码,提高工作效率。