Skip to main content

You can group similar items (e.g., strings or dict fields) using the fuzzywuzzy package by comparing their similarity scores.

Project description

🔍 groupbyScore – Group Similar Items Using Fuzzy Matching in Python

GitHub

Overview

groupbyScore is a Python function that groups similar records from a list of dictionaries using fuzzy matching. It utilizes the rapidfuzz package for high-performance string similarity scoring.


📦 Dependencies

Install with:

pip install rapidfuzz

🚀 Function Signature

groupbyScore(all_data, score, key)

Parameters

  • all_data (List[dict]): A list of dictionaries to be grouped.
  • key (Callable): A function returning a tuple of values (e.g., lambda x: (x["Notes"], x["page_num"])) used to compare and group.

⚙️ How It Works

  1. Iterates over all item pairs in the dataset.

  2. Compares each field in the key(...) tuple:

    • Strings: fuzz.partial_ratio > 80
    • Integers: must match exactly
  3. Groups items where all key fields match.

  4. Yields:

    • the group key
    • the list of matching items

✅ Example Usage

from groupbyScore.groupbyScore import groupbyScore

data = [
    {"Notes": "Chest Pain", "page_num": 1},
    {"Notes": "chest pain", "page_num": 1},
    {"Notes": "church", "page_num": 1},
    {"Notes": "Fever", "page_num": 2},
    {"Notes": "feverish", "page_num": 2}
]

for key, group in groupbyScore(data, key=lambda x: (x["Notes"], x["page_num"]),score=90):
    print("Group Key:", key)
    print("Group Items:", group)

📤 Example Output

Group Key: ('Chest Pain', 1)
Group Items: [{'Notes': 'Chest Pain', 'page_num': 1}, {'Notes': 'chest pain', 'page_num': 1}]

Group Key: ('Fever', 2)
Group Items: [{'Notes': 'Fever', 'page_num': 2}, {'Notes': 'feverish', 'page_num': 2}]

📎 GitHub

🔗 https://github.com/postboxat18/groupbyScore.git

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

groupbyscore-0.0.4.tar.gz (3.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

groupbyscore-0.0.4-py3-none-any.whl (3.8 kB view details)

Uploaded Python 3

File details

Details for the file groupbyscore-0.0.4.tar.gz.

File metadata

  • Download URL: groupbyscore-0.0.4.tar.gz
  • Upload date:
  • Size: 3.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.1

File hashes

Hashes for groupbyscore-0.0.4.tar.gz
Algorithm Hash digest
SHA256 ad7e5adb4131d2f7fec41e869a084f1959c7e5955ae9666aae6cf5fcc63e68a5
MD5 d2e57587103ce14024824da140df0ee3
BLAKE2b-256 f161a2f1777d5f5af2846fd2eed15941a16f708790612a107235121cad11b2f3

See more details on using hashes here.

File details

Details for the file groupbyscore-0.0.4-py3-none-any.whl.

File metadata

  • Download URL: groupbyscore-0.0.4-py3-none-any.whl
  • Upload date:
  • Size: 3.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.1

File hashes

Hashes for groupbyscore-0.0.4-py3-none-any.whl
Algorithm Hash digest
SHA256 d3b0ebc9e038ef0f8885be1126ec20344df5106764169d2fbbaacd1f1440778b
MD5 af1b72a44a27a010fdaba951872d840d
BLAKE2b-256 ee84309f702a4a96b1715c825a0279ccf5dbc104f09a944a7dde86a101127485

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page