python中collections的用法,python3 collections模块
前言中Python内置了四种数据类型,包括:list、tuple、set和dict。这些数据类型各有特点,但是这些特点(比如dict的无序性)在一定程度上限制了数据类型的使用,在一些使用场景下效率会较低,比如有时候我们可能需要维护一个有序的字典。
在这个场景中,我们可以使用Python的内置集合模块,它包括许多有用的集合类。合理使用可以提高我们代码的运行效率。
接下来,介绍集合模块中的常见集合类,集合模块被称为:
使用From Collections Import * default dict dict时,当键值不存在时,直接添加值会出现错误。使用DefaultDict可以避免这个错误。
Defaultdict是对字典类型的补充。它可以为字典值设置一个类型,并在键不存在时自动生成相应类型的值。
例如:
从集合导入默认字典
测试数据=(
(‘猫’,2),
(‘狗’,5),
(‘羊’,3),
(‘猫’,1),
(“羊”,2)
)
test _ data _ dict=default dict(list)
对于名称,测试数据中的数量:
测试数据字典[名称]。追加(数量)
打印(测试数据字典)
打印运行结果(dict(test_data_dict)):
defaultdict( class list ,{cat: [2,1], dog: [5], sheep: [3,2]})
{ 猫:[2,1],狗:[5],羊:[3,2]}有序的dict在Python3.6之前的字典都是乱序的,但是有时候我们需要保持字典的顺序。有序字典可以在字典的基础上实现字典的排序。这里的Ordered指的是字典键插入的顺序,因此
代码示例:
从集合导入订单直接
original_dict={a: 2, b: 4, c: 5}
print(dict.keys():,original_dict.keys(),type(original_dict.keys()),sep=\t )
print(dict.values():,original_dict.values(),type(original_dict.values()),sep=\t )
print(list(zip(tuple(original _ dict . keys()),tuple(original_dict.values())))
对于键,original_dict.items()中的值:
打印(关键字,值)
ordered _ dict=ordered dict(list(zip(tuple(original _ dict . keys()),tuple(original_dict.values())))
对于键,ordered_dict.items()中的值:
打印运行结果(键,值):
可以看到orderDict是根据创建字典时的插入顺序进行排序的。
dequePython中的list是基于array实现的,所以很容易找到,但是插入和删除操作比较耗时和复杂。
Deque是一个高效插入和删除的双向列表,适用于队列和堆栈,并且是线程安全的。
该列表只提供append/pop方法来插入或删除列表末尾的元素。deque增加了appendleft/popleft等方法,更高效地在元素开头插入/删除元素。
代码示例:
从集合导入队列
d=德克([1,2,3,4,5])
D.extendleft([0]) # extendleft默认情况下将元素0添加到列表的左侧。
print(d,list(d),sep=\t )
D.extend([6,7]) # extend默认情况下,新元素6和7被添加到列表的右侧。
print(d,list(d),sep=\t )
D.popleft() # popleft默认删除列表左侧的元素0。
运行打印结果(d,列表(d),sep=\t ):
可以双向操作列表中的元素,非常方便。
Counter dictionary子类,它对可以散列的对象进行计数。
代码示例:
从集合导入计数器
test_counter_data=[猫,狗,羊,猫,狗]
counter_data=Counter()
对于测试计数器数据中的项目:
counter_data[item]=1
print (counter _ data,dict (counter _ data),sep= \ t )的运行结果:
您可以计算对象中的元素数(例如上面代码中列表中的元素)。
命名元组元组子类。
Python中元组的一个重要特点是元素不能添加、删除或更改,一般用索引来查找元组元素。
可以用Namedtuple(typename,field_name)来命名tuple中的元素,然后用这个名字来查找tuple中的值,有点类似于在字典中查找。
代码示例:
从集合导入命名元组
Animal=NamedTuple (animal , type age) #将动物元组(包含类型和年龄两个元素)转换为类 __main__。动物物品。
印刷品(动物)
Mark=animal(type=dog ,age=2) #命名元组中的元素。
打印(mark.type)运行结果:
使用namedtuple可以提高代码的可读性和文档性。
期待陌生,拥抱惊喜。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。