defaultdict与OrderedDict

# 一个键对应多个值 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)

posted @ 2020-07-27 16:36  fly_bk  阅读(143)  评论(0编辑  收藏  举报