python笔记 字典限制

117 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第17天,点击查看活动详情

0 环境

  • 编辑器:idea或vscode
  • 系统版本:windows10
  • python版本:3.9.6

1 字典规则

  • 字典的key不可以重复
  • 字典的key要可hash

当我们定义了一个字典后,若是字典key在重复的话,就会报错。然后列表作为key的话,也是会报错的。

d = {}
d[{"a": 1}] = 1
d[{"a": 2}] = 1
# d[[1,2]] = 4
d[(1,2)] = 12
d[0] = 123
print(d)

image.png

image.png

2 默认字典

1 定义defaultdict字典

使用了defaultdict方法定义字典,需要先导入defaultdict,才可以使用它。

from collections import defaultdict
def default_demo():
    d = {}
    d1 = defaultdict()
    print(d)
    print(d1)

image.png

2 defaultdict初始化以及其他操作

defaultdict初始化的时候,需要我们传入一个函数,大家都叫它工厂函数。它的好处以及作用是:当我们使用下标访问一个键的时候,假如这个键不存在的话,defaultdict会自动调用初始化时传入的函数(工厂函数),生成一个对象作为这个键的value值,让我不由的想起了js的回调函数,当然还是有区别。如下代码:假如我们不需要每次变量都要判断有么有key的情况了,假如没有就传入工厂函数,就是传入那个list,也就说是空列表,d[key] = [],是不是和之前学的很类似,一个针对于单个,而它为整个字典的服务。

from collections import defaultdict
def default_demo():
    d = defaultdict(list)
    for key in range(9):
        for value in range(9):
            d[key].append(value)
    print(d)

image.png

3 总结

字典的key的要求,可hash和不重复。defaultdict初始化的时候就会有一个默认值,这样我们就可以无需关心key是否存在的问题了,没有自动赋一个默认值。