from collections import defaultdict from collections import OrderedDict d = defaultdict(list) d['a'].append(1) d['a'].append(2) d['b'].append(5) print(d) #di = dict(list) #di['b'].append(11) #di['b'].append(22) #di['c'].append(55) #print(di) ds = defaultdict(set) ds['b'].add(11) ds['b'].add(22) ds['c'].add(33) print(ds) do = OrderedDict() do['foo'] = 1 do['far'] = 2 do['coo'] = 5 for key in do: print(key, do[key]) # 字典的运算 prices = { 'IBM': 205.5, 'APPLE': 500, 'HP': 43, 'FB': 88.3 } min_prices = min(zip(prices.values(), prices.keys())) print(min_prices) max_prices = max(zip(prices.values(), prices.keys())) print(max_prices) prices_sorted = sorted(zip(prices.values(), prices.keys())) print(prices_sorted) z1 = [1,2,3] z2 = ['A','B','C'] z3 = zip(z1, z2) print(list(z3)) z4 = zip(*zip(z1, z2)) print(list(z4)) x = [1,2] y = ['a','b','c'] print(list(zip(x,y))) #zip()配合*号操作符,可以将已经zip过的列表对象解压, 并且返回的是元祖 #使用zip和iterators生成滑动窗口 (n -grams) from itertools import islice def n_grams(a, n): z = (islice(a, i, None) for i in range(n)) return zip(*z) a = [1,2,3,4,5,6] print('(a,3):',list(n_grams(a,3))) print('(a,2):',list(n_grams(a,2))) print('(a,4):',list(n_grams(a,4))) # 使用zip反转字典 m = {'a': 1, 'b': 2, 'c': 3, 'd': 4} print('m.items = ', m.items()) print(list(zip(m.values(), m.keys()))) md = dict(zip(m.values(), m.keys())) print(md)