



从最流行的数据结构之一 defaultdict 开始。一旦你开始广泛使用 Python 的字典,就会出现一些问题。例如,默认情况下,当尝试访问不存在的键时,Python 字典会引发 KeyError。
使用 defaultdict,可以为缺失的键定义默认值,从而避免错误并减少样板代码。
示例:计算单词出现次数from collections import defaultdict# Create a defaultdict with default value of 0 for missing keysword_counts = defaultdict(int)# Count the occurrences of each word in a listwords = ["apple", "banana", "apple", "orange", "banana", "apple"]for word in words: word_counts[word] += 1# Output the word countsprint(word_counts)解释:它有什么作用:
defaultdict(int) 创建一个字典,其中缺少的键默认为 0(来自 int() 函数)。每个单词都将被添加到字典中,如果尚不存在,则默认计数为 0。优势:
避免使用 if 语句手动检查键是否存在。简化计数或分组等常见模式。计数器:简化计数变得简单接下来我们有了 Counter!Counter 类用于对字符串或数字等可哈希对象进行计数。它非常适合于对集合中的项目进行计数,并为常见任务提供有用的方法。
示例:计算字符频率from collections import Counter# Count character frequencies in a stringtext = "hello world"char_count = Counter(text)# Get the 2 most common charactersmost_common_chars = char_count.most_common(2)# Output the character frequencies and top charactersprint("Character Frequencies:", char_count)print("Most Common Characters:", most_common_chars)解释:它有什么作用:
Counter(text) 创建一个类似字典的对象,其中 key 是字符,值是它们的计数。most_common(2) 返回出现频率最高的两个项目。优势:
非常适合快速频率分析。提供直观的方法,如 elements() (迭代所有计数的项目) 和 most_common()。namedtuple:可读和不可变的元组如果你曾经使用过 Tuples,但希望获得比 item[0] 或 item[1] 更具可读性的访问,那么 namedtuple 适合你。它允许您创建具有命名字段的轻量级、不可变对象,将 Tuples 的简单性与 Class 属性的清晰度相结合。
示例:存储点坐标from collections import namedtuple# Define a namedtuple for 2D pointsPoint = namedtuple("Point", ["x", "y"])# Create Point objectsp1 = Point(3, 4)p2 = Point(5, 7)# Access values using named attributesprint("Point 1:", p1)print("Point 1 X:", p1.x)print("Point 1 Y:", p1.y)解释:它有什么作用:
namedtuple("Point", ["x", "y"]) 定义具有命名字段 x 和 y 的元组。您可以使用点表示法(例如 p1.x)访问字段。优势:
与常规元组相比(p1[0] 与 p1.x)相比,提高了可读性。对于定义完整类可能有点过头的小型不可变数据对象非常有用