Python9-模块1-day19

在内置数据类型(dict、list、set、tuple)的基础上,collections模块还提供了几个额外的数据类型:Counter、deque、defaultdict、namedtuple和OrderedDict等。
1.namedtuple: 生成可以使用名字来访问元素内容的tuple
2.deque: 双端队列,可以快速的从另外一侧追加和推出对象
3.Counter: 计数器,主要用来计数
4.OrderedDict: 有序字典
5.defaultdict: 带有默认值的字典

namedtuple

from collections import namedtuple
Point = namedtuple('point',['x','y','z'])
p1 = Point(3,2,1)
p2 = Point(1,2,3)
print(p1.x)
print(p1.y)
print(p1)
print(p2.x)
print(p2.y)
print(p2)
Card = namedtuple('card',['suits','number'])
c1 = Card('红心',2)
print(c1)
print(c1.number)
print(c1.suits)

deque

from collections import deque
dq = deque([1,2])
dq .append('a')  #从后面放数据  [1,2,'a']
dq .appendleft('b')   #从前面放数据['b',1,2,'a']
dq.insert(2,3)     #['b',1,3,2,'a']
print(dq.pop())       #从后面取数据
print(dq .popleft())  #从前面取数据


a
b

# OrderedDict

from collections import OrderedDict
d = dict([('a', 1), ('b', 2), ('c', 3)])
# dict的Key是无序的  {'a': 1, 'c': 3, 'b': 2}
od = OrderedDict([('a', 1), ('b', 2), ('c', 3)])
print(od)
# OrderedDict的Key是有序的

OrderedDict([('a', 1), ('b', 2), ('c', 3)])

# defaultdict

from collections import defaultdict
values = [11, 22, 33,44,55,66,77,88,99,90]
my_dict = defaultdict(list)
for value in  values:
    if value>66:
        my_dict['k1'].append(value)
    else:
        my_dict['k2'].append(value)

使用dict时,如果引用的Key不存在,就会抛出KeyError。如果希望key不存在时,返回一个默认值,就可以用defaultdict

>>> from collections import defaultdict
>>> dd = defaultdict(lambda: 'N/A')
>>> dd['key1'] = 'abc'
>>> dd['key1'] # key1存在
'abc'
>>> dd['key2'] # key2不存在,返回默认值
'N/A'

 

上一篇:android-如何在textview中将drawable对齐到文本的左侧?


下一篇:Android TextView Shadow如何工作