defaultdict和deque作用

 from collections import defaultdict,deque

1、defaultdict为字典每个键提供一个默认值,当访问不存在时,会自动创建,并初始化为默认值。difaultdict(list)创建了一个字典,其中每个键对应的默认值是一个空列表,就可以通过键访问列表并添加元素。

具体:defaultdict在访问一个不存在的键时,使用list()函数创建一个空列表作为默认值。 

2、deque是双端队列,支持高效添加删除。广度优先搜索。popleft()获取左侧元素,append()添加到到右侧。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
除了使用 defaultdictdeque,还可以使用普通的字典和列表来实现广度优先搜索算法。 下面是使用普通的字典和列表来实现广度优先搜索算法的 Python 代码: ```python # 读入输入数据 n = int(input()) rooms = {} for i in range(1, n + 1): rooms[i] = list(map(int, input().split(','))) a, b = map(int, input().split(',')) # 广度优先搜索 queue = [a] # 创建队列,将起点A添加进队列 visited = set([a]) # 创建集合,将起点A添加进集合 dist = {a: 0} # 创建距离字典,将起点A的距离初始化为0 while queue: # 当队列不为空时 curr = queue.pop(0) # 取出队列中的第一个元素,表示当前所在的房间 if curr == b: # 如果当前房间是终点B,返回该房间的距离 print(dist[curr]) break for door in rooms[curr]: # 遍历当前房间中的传送门编号 if door not in visited: # 如果该传送门通往的房间不在集合中 visited.add(door) # 将该房间添加进集合中 dist[door] = dist[curr] + 1 # 将其距离设置为当前房间的距离加1 queue.append(door) # 将该房间添加进队列中 else: # 如果遍历完所有可以到达的房间后还没有找到终点B,则返回-1 print(-1) ``` 这个代码没有使用 defaultdictdeque,只用了普通的字典和列表,更加简洁易懂。但是,这个代码的时间复杂度比使用 deque 的代码要高,因为在列表中插入和删除元素的时间复杂度是 O(n),而使用 deque 可以将时间复杂度降为 O(1)。 希望这个代码可以帮助到您,如有其他问题,请随时提问!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值