# 一个键对应多个值 defaultdict
from collections import defaultdict
# 参数是类型
d = defaultdict(list)
d['a'].append(1)
d['a'].append(2)
d['b'].append(3)
print(d)
d2 = defaultdict(set)
d2['a'].add(1)
d2['a'].add(2)
d2['b'].add(3)
print(d2)
d3 = {}
d3.setdefault('a', []).append(1)
d3.setdefault('a', []).append(2)
d3.setdefault('b', []).append(3)
print(d3) # {'a': [1, 2], 'b': [3]}
# 有序字典 OrderedDict
# 一个 OrderedDict 的大小是一个普通字典的两倍,因为它内部维 护着另外一个链表
# OrderedDict 内部维护着一个根据键插入顺序排序的双向链表。
# 每次当一个新的元素插入进来的时候,它会被放到链表的尾部。对于一个已经存在的键的重复赋值不会 改变键的顺序
from collections import OrderedDict
d4 = OrderedDict()
d4['a'] = 1
d4['b'] = 2
d4['c'] = 3
d4['d'] = 4
for k, v in d4.items():
print(k, '=====', v)
import json
print(json.dumps(d4))
prices = {
'ACME': 45.23,
'AAPL': 612.78,
'IBM': 205.55,
'HPQ': 37.20,
'FB': 10.75
}
price1 = zip(prices.values(), prices.keys())
for k, v in price1.__iter__():
print(k, '==', v)