python 集合是有序的吗_collections-extended-额外的Python集合-包(多集)和集合列表(有序集合)-Michael Lenzen Bags Setlists Mappin...

作者:Michael Lenzen

作者邮箱:m.lenzen@gmail.com

首页:http://collections-extended.lenzm.net/

文档:None

下载链接

README

#

.. image:: https://travis-ci.org/mlenzen/collections-extended.svg?branch=master :target: https://travis-ci.org/mlenzen/collections-extended :alt: Build Status

.. image:: https://coveralls.io/repos/mlenzen/collections-extended/badge.svg?branch=master :target: https://coveralls.io/r/mlenzen/collections-extended?branch=master :alt: Coverage

Documentation: http://collections-extended.lenzm.net/

GitHub: https://github.com/mlenzen/collections-extended

PyPI: https://pypi.python.org/pypi/collections-extended

Overview

collections_extended is a Python module providing a bag class, AKA multiset, a setlist class, which is a unique list or ordered set, a bijection class, RangeMap which is a mapping from ranges to values and a IndexedDict class, which is an ordered mapping whose elements can be accessed using index, in addition to key. There are also frozen (hashable) varieties of bags and setlists.

Tested against Python 2.7, 3.4, 3.5, 3.6, 3.7, PyPy & PyPy3.

Getting Started

.. code-block:: python

>>> from collections_extended import bag, setlist, bijection, RangeMap, IndexedDict

>>> from datetime import date

>>> b = bag('abracadabra')

>>> b.count('a')

5

>>> b.remove('a')

>>> b.count('a')

4

>>> 'a' in b

True

>>> b.count('d')

1

>>> b.remove('d')

>>> b.count('d')

0

>>> 'd' in b

False

>>> sl = setlist('abracadabra')

>>> sl

setlist(('a', 'b', 'r', 'c', 'd'))

>>> sl[3]

'c'

>>> sl[-1]

'd'

>>> 'r' in sl # testing for inclusion is fast

True

>>> sl.index('d') # so is finding the index of an element

4

>>> sl.insert(1, 'd') # inserting an element already in raises a ValueError

Traceback (most recent call last):

...

raise ValueError

ValueError

>>> sl.index('d')

4

>>> bij = bijection({'a': 1, 'b': 2, 'c': 3})

>>> bij.inverse[2]

'b'

>>> bij['a'] = 2

>>> bij == bijection({'a': 2, 'c': 3})

True

>>> bij.inverse[1] = 'a'

>>> bij == bijection({'a': 1, 'c': 3})

True

>>> version = RangeMap()

>>> version[date(2017, 10, 20): date(2017, 10, 27)] = '0.10.1'

>>> version[date(2017, 10, 27): date(2018, 2, 14)] = '1.0.0'

>>> version[date(2018, 2, 14):] = '1.0.1'

>>> version[date(2017, 10, 24)]

'0.10.1'

>>> version[date(2018, 7, 1)]

'1.0.1'

>>> version[date(2018, 6, 30):] = '1.0.2'

>>> version[date(2018, 7, 1)]

'1.0.2'

>>> idict = IndexedDict()

>>> idict['a'] = "A"

>>> idict['b'] = "B"

>>> idict['c'] = "C"

>>> idict.get(key='a')

'A'

>>> idict.get(index=2)

'C'

>>> idict.index('b')

1

Installation

pip install collections-extended

Usage

``from collections_extended import bag, frozenbag, setlist, frozensetlist, bijection``

Classes

There are seven new classes provided:

Bags

bag This is a bag AKA multiset. frozenbag This is a frozen (hashable) version of a bag.

Setlists

setlist An ordered set or a list of unique elements depending on how you look at it. frozensetlist This is a frozen (hashable) version of a setlist.

Mappings

bijection A one-to-one mapping. RangeMap A mapping from ranges (of numbers/dates/etc) IndexedDict A mapping that keeps insertion order and allows access by index.

:Author: Michael Lenzen :Copyright: 2019 Michael Lenzen :License: Apache License, Version 2.0 :Project Homepage: https://github.com/mlenzen/collections-extended

Copy from pypi.org

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值