pylookups
Excel-style lookup, filter, and sort functions for plain Python lists — no pandas or numpy required.
pip install pylookups
The install name is pylookups, but the import name is pylookup:
from pylookup import vlookup, xlookup, match, index, index_match, filter, unique, sort
Note:
filtershadows Python's built-infilterin any module that imports it by name. If you still need the built-in in the same file, use the namespaced style instead:import pylookup as pl pl.filter([1, 2, 3, 4], lambda x: x > 2)
Install (local development)
python -m venv .venv
.venv\Scripts\activate # Windows
pip install -e ".[dev]"
pytest
Functions
Row/column positions follow Excel's convention: 1-based, not 0-based.
match(lookup_value, lookup_array, match_type=0)
Position (1-based) of lookup_value in lookup_array.
match_type: 0 exact, 1 largest value <= target (ascending array),
-1 smallest value >= target (descending array). Raises NotFoundError.
index(array, row_num, col_num=None)
Value at row_num (and col_num for a 2D table). Omit col_num to get
the whole row.
index_match(return_array, lookup_value, lookup_array, match_type=0)
index + match combined: find lookup_value in lookup_array, return
the item at that position in return_array.
vlookup(lookup_value, table, col_index, exact=True)
Search the first column of table (list of rows) for lookup_value,
return the value at col_index of the matching row.
hlookup(lookup_value, table, row_index, exact=True)
Search the first row of table for lookup_value, return the value at
row_index of the matching column.
xlookup(lookup_value, lookup_array, return_array, if_not_found=None, match_mode=0, search_mode=1)
Search lookup_array for lookup_value, return the corresponding item
from return_array. match_mode: 0 exact, -1 exact or next smaller,
1 exact or next larger. search_mode: 1 first-to-last, -1 last-to-first.
Returns if_not_found instead of raising when nothing matches.
filter(array, condition, if_empty=None)
Keep items where condition is true. condition is a predicate function
or a boolean list the same length as array.
unique(array, keep="first")
Distinct items, order preserved. keep="last" keeps the last occurrence
instead of the first.
sort(array, by=None, key=None, reverse=False)
Sort a flat list, or a 2D table by column by (1-based). key overrides
both with a custom function.
Example
table = [
["id", "name", "score"],
[1, "alice", 90],
[2, "bob", 75],
[3, "carol", 60],
]
vlookup(2, table, 2) # "bob"
xlookup(3, [1, 2, 3], ["a", "b", "c"]) # "c"
sort(table[1:], by=3, reverse=True) # highest score first (skip header row)
See src/examples/basic.py for more.
Publishing to PyPI
pip install build twine
python -m build
twine upload dist/*
Metadata
Release files for pylookups 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| pylookups-0.1.0.tar.gz | 6.3 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| pylookups-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 13.6 kB
Release files / pylookups-0.1.0.tar.gz
| Download URL | pylookups-0.1.0.tar.gz |
|---|---|
| Size | 6.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
203e1bb792c05b1af4f0ff42c37c2b96fdbb07bb138b26b9ab677debbf17e9bc
|
|
BLAKE2b-256 checksum How to use checksums |
f05d515320efd44b81d359eed1fdebf4592278111a9066b26818ae817945388d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.10
|
Release files / pylookups-0.1.0-py3-none-any.whl
| Download URL | pylookups-0.1.0-py3-none-any.whl |
|---|---|
| Size | 7.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
da1ef5548036fbd5f76cff2f4dd20b4b7d432af4cd861e967eee01698989a3f0
|
|
BLAKE2b-256 checksum How to use checksums |
7d3057bede390207586fe3f3459dfc5ae9f929d68c9aca5909d8dc82734b21f9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.10
|