Python 集合
在Python中,集合(collections)是用于存储数据的容器,Python中内置的数据结构包括元组(tuples)、列表(lists)、集合(sets)和字典(dictionaries)。collections类提供了除内置数据结构以外的其他数据结构。
‘collections’模块中的一些数据结构-
- Counter计数器
-
namedTuple命名元组
-
orderedDict有序字典
-
defaultDict默认字典
-
Deque双端队列
-
chainMap链式映射
Counter计数器
这是一种集合类型,其中元素将存储为字典键(keys),并将计数存储为字典值(values)。
如果要计算列表中任何项目的频率,传统上会使用一个名为“ count”的变量,该变量最初将被设置为零,并且每次遇到该项目时都会增加一个。这在列表很长时不是最优化的方式。因此,为了同时计数不同的对象,我们将使用计数器。
示例
在以下示例中,导入计数器方法来自collections库。 然后创建一个名为“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()function)
namedtuple()将允许我们创建具有命名字段的元组。因此,我们可以使用点符号访问它们而不是使用索引访问项目。
使用索引访问元组项可能很困难和令人困惑。为了防止这种情况,我们可以使用namedtuple()。
与元组一样,命名元组也是不可变的。
namedtuple需要两个参数。
示例
在以下示例中,此程序创建了一个名为“person”的namedtuple,并创建了一个名为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