tuple_1 = ('weilianixn', 12345, 'cs', 18, 'male') for i in tuple_1: print(i)
tuple_1 = ('weilianixn', 12345, 'cs', 18, 'male') name, password, major,*part = tuple_1 print(name) print(password) print(part) # [18, 'male']
for name, password, job, age, part in tuple_1: ValueError: too many values to unpack (expected 5)
# class User: # def __init__(self, name, password): # self.name = name # self.password = password # # user = User('wei', 1233214) # print(user.password, user.name) # 與下面等價 from collections import namedtuple User_tuple = namedtuple('User_t', ['name', 'password', 'major', 'age']) user_t = User_tuple(name='wei', password=2131, major='cs', age=18) # tuple_1 = ('weilianixn', 12345, 'cs') # user_t = User_tuple(*tuple_1, 18) # *不加tuple_1會斷定成一個變量 # dict_1 = { # 'name': 'wei', # 'password': '123213', # 'major': 'cs' # } # user_t = User_tuple(**dict_1, age=18) print(user_t.name, user_t.password, user_t.major) print(type(user_t))
from collections import namedtuple User_tuple = namedtuple('User_t', ['name', 'password', 'major', 'age']) # list_1 = ['weilianixn', 12345, 'cs', 18] # dict_1 = { # 'name': 'wei', # 'password': '123213', # 'major': 'cs', # 'age': 18 # } tuple_1 = ('weilianixn', 12345, 'cs', 18) user_t = User_tuple._make(tuple_1)
_make()方法和*的做用相似,至關於解析了括號內的可迭代對象,傳的是括號內的值
User_tuple = namedtuple('User_t', ['name', 'password', 'major','age']) list_1 = ['weilianixn', 12345, 'cs',18] user_t = User_tuple._make(list_1) dict_12 = user_t._asdict() print(dict_12) # OrderedDict([('name', 'weilianixn'), ('password', 12345), ('major', 'cs'), ('age', 18)])
user = ['wei1', 'wei2', 'wei1', 'wei3', 'wei2', 'wei3', 'wei1'] user_dict = {} for i in user: if i in user_dict: user_dict[i] += 1 else: user_dict[i] = 1 print(user_dict) # {'wei1': 3, 'wei2': 2, 'wei3': 2}
for i in user: user_dict.setdefault(i, 0) user_dict[i] += 1
from collections import defaultdict user = ['wei1', 'wei2', 'wei1', 'wei3', 'wei2', 'wei3', 'wei1'] user_dict = defaultdict(int) for i in user: user_dict[i] += 1
from collections import defaultdict def group_d(): return { 'name': '', 'nums': 0 } group_dict = { 'group': { 'name': '', 'nums': 0 } } user_dict = defaultdict(group_d) # 不能傳group_dict,不但是可調用對象 user_dict['group']
>>> from collections import deque >>> q = deque(['a', 'b', 'c']) >>> q.append('x') >>> q.appendleft('y') >>> q deque(['y', 'a', 'b', 'c', 'x'])
from collections import deque deq = deque([1,2,3,4]) deq1 = deque({'name':'wei', 'age':18}) print(deq1) # deque(['name', 'age'])
deque能夠限定隊列的長度,先入先出,能夠實現保留最後N個元素
from collections import deque deq = deque(maxlen=5) print(deq.__len__()) with open('02第二模塊之三體語錄', 'r+', encoding='utf-8') as f: with open('new', 'w', encoding='utf-8') as f1: while True: line = f.readline() if line: deq.append(line) if deq.__len__() == 5: f1.write(deq[0]) else: break for i in range(3): f1.write(deq[i + 1])
from collections import Counter li = ['wei1', 'wei2', 'wei1', 'wei3', 'wei2', 'wei3', 'wei1'] counter = Counter(li) # Counter({'name': 'wei', 'age': 18}) c = Counter() for ch in 'programming': c[ch] = c[ch] + 1 # 只有defaultdict才能這樣用 print(c) # Counter({'r': 2, 'g': 2, 'm': 2, 'p': 1, 'o': 1, 'a': 1, 'i': 1, 'n': 1})
from collections import Counter c = Counter('which') c.subtract('witch') # Counter({'c': 0, 'h': 1, 'i': 0, 't': -1, 'w': 0}) c.subtract('witch') # Counter({'c': -1, 'h': 0, 'i': -1, 't': -2, 'w': -1})
from collections import ChainMap dict1 = {'a': "w1", 'b': 'w2', 'c': 'w3'} dict2 = {'c': 'w2', 'd': 'w4', 'e': 'w5'} new_dict = ChainMap(dict1, dict2) dict1['a'] = 'w' print(new_dict) for item in new_dict.items(): print(item) print(new_dict.maps)
ChainMap({‘a’: ‘w’, ‘b’: ‘w2’, ‘c’: ‘w3’}, {‘c’: ‘w2’, ‘d’: ‘w4’, ‘e’: ‘w5’})(‘c’, ‘w3’)(‘d’, ‘w4’)(‘e’, ‘w5’)(‘a’, ‘w’)(‘b’, ‘w2’)[{‘a’: ‘w’, ‘b’: ‘w2’, ‘c’: ‘w3’}, {‘c’: ‘w2’, ‘d’: ‘w4’, ‘e’: ‘w5’}]