Python 集合
在Python中,集合是用于存储数据的容器。Python内置的数据结构包括元组、列表、集合和字典。除了内置数据结构之外,collections类还提供了其他的数据结构。
collections模块中的一些数据结构包括:
- Counter
-
namedTuple
-
orderedDict
-
defaultDict
-
Deque
-
chainMap
Counter
Counter是一种集合类型,其中元素将存储为字典键,计数将存储为字典值。
每当您想要计算列表中任何项的频率时,传统上会使用一个名为’count’的变量,该变量最初设置为零,并且每次遇到该项时将递增一次。但是,当列表很长时,这不是一种优化的方式。因此,为了防止这种情况发生,并同时计算不同的对象,我们将使用计数器。
示例
在以下示例中,从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()函数
The 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。然后,它创建了person namedtuple的一个实例,名为id,并为每个字段赋值。
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
有序字典
有序字典是一种可以记住其项顺序的字典。它用于保持项添加到列表中的顺序。可以以与普通字典类似的多种方式向有序字典中添加项。
示例
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