字典不常见的用法
一个重要的collections模块和Counter类
1.collections模块
collections模块包含除了dict、set、list、tuple以外的一些特殊的容器类型,比如下面几个:
(1)OrderedDict类:排序字典,是字典的子类。
(2)defaultdict:使用工厂函数创建字典,使不用考虑缺失的字典键。
(3)Counter类:为hashable对象计数,是字典的子类。
2.Counter类
counter类主要是用来跟踪值的出现的个数。存储形式是字典的键值对形式,其中key是出现的元素,value是该元素出现的次数。
from collections import Counter
nums1 = [1,2,2,1], nums2 = [2,2]
dict1 = Counter(nums1)
dict2 = Counter(nums2)
return list((dict1&dict2).elements())
好了,话不多说,上面代码主要实现了 两个数组的交集,这是LeetCode上面的一道题。
这里首先将列表转成字典形式
dict1 = Counter(nums1)
dict1
>>Counter({1: 2, 2: 2})
dict2 = Counter(nums2)
dict2
>>Counter({2: 2})
print(list((dict1&dict2).elements()))
>>[2, 2]
好了,记住一个小知识的方法就是实现它。