This python on package simplifies the manipulation with the lists of multi-dimensional dictionaries as select, filter or join
Project description
Introduction
This Python package provides a straightforward way to manipulate lists of multi-dimensional dictionaries. It includes support for the following core operations:
- Attribute Selection: Easily select specific attributes from your data and nested attributes.
- Record Filtering: Filter records based on custom conditions using a simple syntax.
- List Joining: Perform joins between lists of dictionaries based on a defined key.
- Aggregation: Aggregation function as
countandcount_distinctto summarize the data.
The package is designed for handling small to medium-sized datasets, offering convenience and simplicity. However, it is not optimized for large-scale big data processing.
Getting Started
The package is available on the PyPi and can be installed by the following command:
pip install surquest-utils-qdict
Once the package is installed you can start using it by importing the qdict module:
from surquest.utils.qdict import Dataset, Attribute as Attr, AND, OR
# Create the edicto dataset
authors = edicto.Dataset([
{'id': 1, 'name': 'Charles Dickens', 'yearOfBirth': 1812, 'yearOfDeath': 1870, 'location': {'city': 'London', 'country': 'UK'}},
{'id': 2, 'name': 'Jane Austen', 'yearOfBirth': 1775, 'yearOfDeath': 1817, 'location': {'city': 'Steventon', 'country': 'UK'}},
{'id': 3, 'name': 'Mark Twain', 'yearOfBirth': 1835, 'yearOfDeath': 1910, 'location': {'city': 'Florida', 'country': 'USA'}},
{'id': 4, 'name': 'Ernest Hemingway', 'yearOfBirth': 1899, 'yearOfDeath': 1961, 'location': {'city': 'Oak Park', 'country': 'USA'}},
{'id': 5, 'name': 'F. Scott Fitzgerald', 'yearOfBirth': 1896, 'yearOfDeath': 1940, 'location': {'city': 'St. Paul', 'country': 'USA'}}
])
# Select the attributes
authors.select("id", "name")
# Select the attributes and the nested attributes
authors.select(Attr("id"), Attr("name"), "location.country")
# Select the attributes and the nested attributes
authors.select(Attr("id"), Attr("name"), Attr("location").get("country"))
# Select the attributes and the nested attributes and alias the columns
authors.select(Attr("id"), Attr("name"), Attr("location").alias("loc").get("city").alias("town"))
# Filter the records
authors.filter(Attr("yearOfBirth") > 1800).select("id", "name")
# Complex filter
authors.filter(Attr("yearOfBirth") > 1800).filter(Attr("location.country") == "UK").select("id", "name")
# Join the datasets
books = edicto.Dataset([
{'id': 1, 'title': 'A Tale of Two Cities', 'year': 1859, "author": {"id": 1}},
{'id': 2, 'title': 'Great Expectations', 'year': 1861, "author": {"id": 1}},
{'id': 3, 'title': 'Pride and Prejudice', 'year': 1813, "author": {"id": 2}},
{'id': 4, 'title': 'Sense and Sensibility', 'year': 1811, "author": {"id": 2}},
{'id': 5, 'title': 'Adventures of Huckleberry Finn', 'year': 1884, "author": {"id": 3}},
{'id': 6, 'title': 'The Adventures of Tom Sawyer', 'year': 1876, "author": {"id": 3}},
{'id': 7, 'title': 'The Old Man and the Sea', 'year': 1952, "author": {"id": 4}},
{'id': 8, 'title': 'A Farewell to Arms', 'year': 1929, "author": {"id": 4}},
{'id': 9, 'title': 'The Great Gatsby', 'year': 1925, "author": {"id": 5}},
{'id': 10,'title': 'Tender Is the Night', 'year': 1934, "author": {"id": 5}}
])
authors.join(
other=books,
left_on="id",
right_on="authorId",
how="inner"
).select("name", "location.country", "title", "year")
Local development
You are more than welcome to contribute to this project. To make your start easier we have prepared a docker image with all the necessary tools to run it as interpreter for Pycharm or to run tests.
Build docker image
docker build `
--tag surquest/utils/qdict `
--file package.base.dockerfile `
--target test .
Run tests
docker run --rm -it `
-v "${pwd}:/opt/project" `
-w "/opt/project/test" `
surquest/utils/qdict pytest
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file surquest_utils_qdict-0.0.1rc1.tar.gz.
File metadata
- Download URL: surquest_utils_qdict-0.0.1rc1.tar.gz
- Upload date:
- Size: 10.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.0.1 CPython/3.9.21
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3b0d1534421e655a8325d05190e0b6609bb06348973de053441d6a04162016ba
|
|
| MD5 |
d551071b9e7450c730ac65150156737e
|
|
| BLAKE2b-256 |
9ae950735cfcb00a7e0b54449ab88acc636ffa6f9ff4f70c111941aefb75c6d5
|
File details
Details for the file surquest_utils_qdict-0.0.1rc1-py2.py3-none-any.whl.
File metadata
- Download URL: surquest_utils_qdict-0.0.1rc1-py2.py3-none-any.whl
- Upload date:
- Size: 7.1 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.0.1 CPython/3.9.21
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
104a5e76e7ef6b5625898d3ccb44907709f1ab1fb5041b0b1d9e49ecd9c7400b
|
|
| MD5 |
6e66d81b6477948e581a32481e7bc4a4
|
|
| BLAKE2b-256 |
e7ca601d5714a481e753c02b5cc6782b45fcaedb22ad4c4a48514ad83e58bb56
|