python cookbook 1数据结构和算法(2)
发布日期:2021-09-11 09:57:16 浏览次数:11 分类:技术文章

本文共 1659 字,大约阅读时间需要 5 分钟。

hot3.png

6.设置dict默认形式

>>> from collections import defaultdict>>> d=defaultdict(list)>>> ddefaultdict(
, {})>>> d['a'].append(1)>>> d['a'].append(2)>>> d['b'].append(4)>>> ddefaultdict(
, {'a': [1, 2], 'b': [4]})>>>d = defaultdict(set)也可以采用setdefault,但是不够优雅>>>d = {}>>>d.setdefault('a', []).append(1)

7字典的排序

 OrderedDict会保留原始的插入顺序

>>>from collections import OrderedDict>>> d=OrderedDict()>>> d['foo'] = 1>>> d['bar'] = 2>>> d['spam'] = 3>>> d['grok'] = 4>>> dOrderedDict([('foo', 1), ('bar', 2), ('spam', 3), ('grok', 4)])

OrderedDict会在内部维持一个双链表,一个新元素插入时会放在队尾,OrderedDict占用的内存是普通dict的两倍,使用时需要谨慎考虑

8 dict的计算

>>> prices = {'ACME': 45.23,'AAPL': 612.78,'IBM': 205.55,'HPQ': 37.20,'FB': 10.75}>>> min_price = min(zip(prices.values(), prices.keys()))>>> min_price(10.75, 'FB')或者>>> min(prices, key=lambda k: prices[k])'FB'>>> prices[min(prices, key=lambda k: prices[k])]10.75

9查找两个dict的公共元素(仅python3支持)a.keys()也可以像set那样直接使用|&-^求合集,交集,差补,差分.

>>> a{'y': 2, 'z': 3, 'x': 1}>>> b{'y': 2, 'w': 10, 'x': 11}>>> type(a.keys())
#在python2.7是list类型>>> a.keys()&b.keys(){'y', 'x'}>>> a.keys()-b.keys(){'z'}>>> a.items()&b.items(){('y', 2)}

10从序列中消除重复元素

def dedupe(items, key=None):    seen = set()    for item in items:        val = item if key is None else key(item)        if val not in seen:            yield item            seen.add(val)>>> a = [ {'x':1, 'y':2}, {'x':1, 'y':3}, {'x':1, 'y':2}, {'x':2, 'y':4}]>>> list(dedupe(a, key=lambda d: (d['x'],d['y'])))[{'x': 1, 'y': 2}, {'x': 1, 'y': 3}, {'x': 2, 'y': 4}]>>> list(dedupe(a, key=lambda d: d['x']))[{'x': 1, 'y': 2}, {'x': 2, 'y': 4}]

转载于:https://my.oschina.net/u/1409733/blog/398752

转载地址:https://blog.csdn.net/weixin_34409703/article/details/92096489 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:HP-UX MC/SG报错一例分享
下一篇:前端的横向发展

发表评论

最新留言

做的很好,不错不错
[***.243.131.199]2024年04月12日 06时51分08秒