1. namedtuple
from collections import namedtuple, defaultdict, Counter, deque, OrderedDict
# 创建简单对象,省内存
User = namedtuple("User", ["name", "age", "sex", "edu"])
print User
# 实例化1
u1 = User(name="张三", age=18, sex="男", edu="root")
print u1.name
print u1.age
print u1.sex
print u1.edu
# 实例化2
user_tuple = ("李四", 20, "女", "www")
u2 = User(*user_tuple)
print u2.name
print u2.age
print u2.sex
print u2.edu
# 实例化3
u3 = User._make(user_tuple)
print u3.name
print u3.age
print u3.sex
print u3.edu
print u1._asdict()
2. defaultdict
from collections import namedtuple, defaultdict, Counter, deque, OrderedDict
user_dict = {}
users = ["user1", "user2","user3","user1","user2","user2"]
# 示例1
for user in users:
user_dict.setdefault(user, 0)
user_dict[user] += 1
print user_dict
# 示例2
default_dict = defaultdict(int) # 传入可调用对象
default_dict["user1"]
print default_dict
# 示例3
def gen_default():
return {"name": "", "age": 0}
default_dict = defaultdict(gen_default)
default_dict["user1"]
print default_dict
3. deque
from collections import namedtuple, defaultdict, Counter, deque, OrderedDict
# 双端队列, 可从左右插入、删除元素
user_list = deque(["name1", "name2", "name3"])
user_list.appendleft("name0")
print user_list
# 有序字典
order_dict = OrderedDict() # python3 dict()也是按插入顺序
order_dict["c"] = 1
order_dict["b"] = 2
order_dict["a"] = 3
print order_dict
# ChainMap,类似于合并字典, python2没有
dict1 = {"a": "1", "b": "2"}
dict2 = {"d": "1", "c": "2"}