当前位置: 首页 > 工具软件 > Collections-C > 使用案例 >

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

赵景曜
2023-12-01

作者: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

 类似资料: