Python 集合


在 Python 中,集合是用于存储数据的容器。Python 中的内置数据结构包括元组、列表、集合和字典。collections 类除了内置数据结构外,还提供了其他数据结构。

‘collections’ 模块中的一些数据结构:

  • Counter

  • namedTuple

  • orderedDict

  • defaultDict

  • Deque

  • chainMap

Counter

它是一种集合类型,其中元素将存储为字典键,计数将存储为字典值。

当您想要计算列表中任何项目的频率时,传统上您会使用一个名为“count”的变量,该变量最初设置为零,并且每次遇到该项目时都会递增 1。当列表很长时,这不是一种优化的方法。因此,为了防止这种情况并在同一时间计算不同的对象,我们将使用计数器。

示例

在下面的示例中,从 collections 库导入 Counter 方法。然后创建一个名为 'a' 的字符串并将其赋值为“tutorialspoint”。

from collections import Counter
a="tutorialspoint"
result=Counter(a)
print(result)

输出

执行上述程序后,它会打印出 'a' 中每个字母的字典,以及每个字母出现的次数。

Counter({'t': 3, 'o': 2, 'i': 2, 'u': 1, 'r': 1, 'a': 1, 'l': 1, 's': 1, 'p': 1, 'n': 1

values() 函数

values() 函数将返回与所有值关联的计数列表。

示例

from collections import Counter
a=["apple","mango","cherry","apple","mango","mango"]
result=Counter(a)
print(result.values())

输出

dict_values([2, 3, 1])

most_common() 函数

most_common() 函数用于返回具有最大计数的项目/项目的字典。需要显示的值的数量必须在括号内指定。

示例

from collections import Counter
a=["apple","mango","cherry","apple","mango","mango"]
result=Counter(a)
print(result.most_common(1))
print(result.most_common(2))

输出

[('mango', 3)]
[('mango', 3), ('apple', 2)]

namedtuple() 函数

namedtuple() 允许我们创建具有命名字段的元组。因此,我们可以使用点表示法访问它们,而不是使用索引访问它们。

使用索引访问元组的项目可能很困难且令人困惑。为了防止这种情况,我们可以使用namedtuple()。

与元组一样,namedtuple 也是不可变的。

namedtuple 接受两个参数。

示例

在下面的示例中,此程序创建了一个名为“person”的 namedtuple,它具有四个字段:name、place、sex 和 age。然后,它创建了一个名为 id 的 person namedtuple 的实例,并为每个字段提供值。

from collections import namedtuple
person=namedtuple("person",["name","place","sex","age"])
id=person("kavya","Hyderabad","F","21")
print(id[1])
print(id[3])
print(id.place)
print(id.age)

输出

Hyderabad
21
Hyderabad
21

OrderedDict

OrderedDict 是一种可以记住其项目顺序的字典。它用于保留将项目添加到列表中的顺序。可以以类似于普通字典的各种方式将项目添加到 OrderedDict 中。

示例

from collections import OrderedDict
d=OrderedDict()
d['sachin']=100
d['Dhoni']=90
d['Rohit']=110
d['Kohli']=95
print(d)

输出

执行上述代码后,它会生成以下程序并打印整个字典。

OrderedDict([('sachin', 100), ('Dhoni', 90), ('Rohit', 110), ('Kohli', 95)])

示例

以下程序从 collections 模块导入 OrderedDict 类,并创建一个具有四个键值对的 OrderedDict 对象。键为 'sachin'、'Dhoni'、'Rohit' 和 'Kohli'。值分别为 100、90、110 和 95。

from collections import OrderedDict
d=OrderedDict([('sachin',100),('Dhoni',90),('Rohit',110),('Kohli',95)])
print(d)
print(d.keys())

输出

OrderedDict([('sachin', 100), ('Dhoni', 90), ('Rohit', 110), ('Kohli', 95)])
odict_keys(['sachin', 'Dhoni', 'Rohit', 'Kohli'])

defaultdict

defaultdict 具有字典的所有功能,并具有一个附加功能,即它永远不会引发 KeyError。在字典中,如果您尝试访问或修改不存在的键,则会得到 KeyError。而 defaultdict 在键不存在时始终分配一个默认值。因此,defaultdict 用于处理缺失的键。

示例

以下程序从 collections 模块导入 defaultdict 类。然后,它使用 defaultdict 创建一个新的字典 d,并将其设置为接收整数值。三个键值对被添加到字典中,'Sachin' 的值为 90,'Dhoni' 的值为 80,'Virat' 的值为 95。

from collections import defaultdict
d=defaultdict(int)
d['Sachin']=90
d['Dhoni']=80
d['Virat']=95
print(d)
print(d['Dhoni'])
print(d['Rohit'])

输出

defaultdict(, {'Sachin': 90, 'Dhoni': 80, 'Virat': 95})
80
0

由于 'Rohit' 未定义且 'int' 作为参数给出,因此默认值为 0。

示例

from collections import defaultdict
d=defaultdict(float)
d['Sachin']=90
d['Dhoni']=80
print(d['Rohit'])

输出

0.0

更新于: 2023年4月24日

3K+ 阅读量

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告