音乐
音乐
暂未播放
0:00/0:00
暂无歌词
LeetCode | list、dict、set 有什么区别?
707 字
4 分钟
LeetCode | list、dict、set 有什么区别?
这个文档只整理几个最常见的容器:list、dict、set,以及字典分组时常用的 defaultdict(list)。
简单说:
1list -> 存一串东西,关心顺序,可以重复2dict -> 存 key -> value 的对应关系3set -> 存有没有出现过,不重复list:列表 []#
[] 表示列表,也就是 list。
列表适合存一串有顺序的数据,可以有重复元素。
常见操作:
1arr.append(x) # 在末尾添加 x2arr.pop() # 删除并返回最后一个元素3arr.remove(x) # 删除第一个等于 x 的元素4arr[i] # 访问第 i 个元素当你需要保存一组有顺序的数据,或者需要把一组结果收集起来时,用列表。
dict:字典 {}#
{} 通常表示字典,也就是 dict。
字典保存的是 key -> value 的对应关系。
1mp = {}2mp["aet"] = ["eat", "tea", "ate"]这里:
1key = "aet"2value = ["eat", "tea", "ate"]常见操作:
1mp[key] = value # 修改2mp[key] # 根据 key 取 value3key in mp # 判断 key 是否存在4mp.values() # 取出所有 value5del mp[key] # 删除这个 key当你想通过一个标识快速找到对应内容时,用字典。
比如在 字母异位词分组 里,可以用排序后的字符串 "aet" 找到对应的一组异位词。
注意:空的 {} 是字典,不是集合。
mp.values()#
mp.values() 取出来的是字典里的所有 value。比如:
1mp = {2 "aet": ["eat", "tea", "ate"],3 "ant": ["tan", "nat"],4 "abt": ["bat"],5}6
7mp.values()结果可以理解成:
1[2 ["eat", "tea", "ate"],3 ["tan", "nat"],4 ["bat"]5]如果题目要返回普通列表,通常再套一层 list:
1list(mp.values())字典分组:defaultdict(list)#
普通字典在 key 不存在时,不能直接这样写:
1mp[key].append(st)因为 mp[key] 还没有对应的列表,会报错。
普通字典需要先判断:
1if key not in mp:2 mp[key] = []3mp[key].append(st)defaultdict(list) 可以少写这个判断:
1from collections import defaultdict2
3mp = defaultdict(list)4mp[key].append(st)它可以理解成一个会自动创建空列表的字典。如果某个 key 还不存在,它会自动给这个 key 准备一个空列表。
当你要做“分组”时,经常可以用它。比如把同一类字符串放进同一个列表里。
set:集合 set()#
set() 表示集合。
集合只关心“有没有这个元素”,不保存重复元素,也不关心顺序。
常见操作:
1s.add(x) # 添加 x2s.remove(x) # 删除 x,如果 x 不存在会报错3s.discard(x) # 删除 x,如果 x 不存在也不报错4x in s # 判断 x 是否存在当你只关心某个东西有没有出现过时,用集合。
比如 无重复字符的最长子串 里,可以用集合记录当前窗口里有哪些字符。
小结#
1list -> 有顺序的一串数据2dict -> 通过 key 快速找到 value3set -> 快速判断某个东西有没有出现过文章分享
如果这篇文章对你有帮助,欢迎分享给更多人!
LeetCode | list、dict、set 有什么区别?
https://pinghaoyang.com.cn/posts/leetcode-list-dict-set/最后更新于 2026-08-01
部分内容可能已过时
相关文章智能推荐
1
LeetCode | 两数相加
LeetCodeLeetCode 两数相加题解:模拟竖式逐位相加,dummy 虚拟头节点串联结果链表,维护 carry 进位。
2
LeetCode | 移动零
LeetCodeLeetCode 移动零题解:使用双指针原地移动零,同时保持非零元素相对顺序。
3
LeetCode | 合并两个有序链表
LeetCodeLeetCode 合并两个有序链表题解:双指针遍历比较节点值,dummy 虚拟头节点串联结果链表。
4
LeetCode | 两数之和
LeetCodeLeetCode 两数之和题解:使用 Python 字典作为哈希表,在一次遍历中找到目标下标。
5
LeetCode | 双指针
LeetCode整理 LeetCode 双指针题目的核心思路:用两个指针描述位置或范围,并按规则移动,涵盖移动零、盛水容器、三数之和、接雨水、最长回文子串。
随机文章随机推荐
暂无随机文章
评论区
分享你的想法,与大家交流讨论
--
总访问量
--
访客数
公告
音乐
音乐
暂未播放
0:00/0:00
暂无歌词
站点统计
文章
66
分类
16
标签
93
总字数
477,284
运行时长
0 天
最后活动
0 天前
最新动态



