- # 列表, 元祖
- # 字典
- # 集合, frozenset
- # 字符串
- # 堆栈 : 先进后出
- # 队列 : 先进先出 FIFO
- # 坐标
- from collections import namedtuple
- Point = namedtuple('point',['x','y','z'])
- p1 = Point(1,2,3)
- p2 = Point(3,2,1)
- print(p1.x)
- print(p1.y)
- print(p1,p2)
- # 花色和数字
- Card = namedtuple('card',['suits','number'])
- c1 = Card('红桃',2)
- print(c1)
- print(c1.number)
- print(c1.suits)
- # 队列
- import queue
- q = queue.Queue()
- q.put([1,2,3])
- q.put(5)
- q.put(6)
- print(q)
- print(q.get())
- print(q.get())
- print(q.get())
- print(q.get()) # 阻塞
- print(q.qsize())
- # 双端队列
- 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.pop()) # 从后面取数据
- print(dq.popleft()) # 从前面取数据
- print(dq)
- # 有序字典
- from collections import OrderedDict
- od = OrderedDict([('a', 1), ('b', 2), ('c', 3)])
- print(od) # OrderedDict 的 Key 是有序的
- print(od['a'])
- for k in od:
- print(k)
- from collections import defaultdict
- d = defaultdict(lambda : 5)
- print(d['k'])
- # 有序字典
- defaultdict
- # 有如下值集合 [11,22,33,44,55,66,77,88,99,90...], 将所有大于 66 的值保存至字典的第一个 key 中, 将小于 66 的值保存至第二个 key 的值中.
- #
- # 即: {'k1': 大于 66 , 'k2': 小于 66}
- values = [11, 22, 33,44,55,66,77,88,99,90]
- my_dict = {}
- for value in values:
- if value>66:
- if my_dict.has_key('k1'):
- my_dict['k1'].append(value)
- else:
- my_dict['k1'] = [value]
- else:
- if my_dict.has_key('k2'):
- my_dict['k2'].append(value)
- else:
- my_dict['k2'] = [value]
- 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'
- #Counter
- # #Counter 类的目的是用来跟踪值出现的次数. 它是一个无序的容器类型, 以字典的键值对形式存储, 其中元素作为 key, 其计数作为 value. 计数值可以是任意的 Interger(包括 0 和负数).Counter 类和其他语言的 bags 或 multisets 很相似.
- # c = Counter('abcdeabcdabcaba')
- # print c
- # Counter({'a': 5, 'b': 4, 'c': 3, 'd': 2, 'e': 1})
来源: http://www.bubuko.com/infodetail-2877730.html