Skip to main content

Library created to map keys in dictionaries.

Project description

With this library you can map your dictionaries easily, you just need to pass it:

1- output: the dictionary you want to receive, the variables you want to map must go with {}

from DictMaper import MapDict
result = MapDict(
    output={
        "{var_1}": "Hi! {var_2}, welcome to {company_name}"
        "company name":"{company_name}"
    }
    ......
)

2- context: context is the data from which the information will be obtained:

from DictMaper import MapDict
result = MapDict(
    output={
        "{var_1}": "Hi! {var_2}, welcome to {company_name}"
        "company name":"{company_name}"
    }
    context={
        "user": {
          "name":"user name",
          "email":"test_email@..."
        }
        "company":{
         "information":{
            "name":"Company name",
            "id":"1234"
            }
        }
   }
)

3- vars: vars are the variables you want to map to your output and the value is where they are located within context:

from DictMaper import MapDict
result = MapDict(
    output={
        "{var_1}": "Hi! {var_2}, welcome to {company_name}",
        "company":"{company_name}"
    }
    context={
        "user": {
          "name":"user name",
          "email":"test_email@..."
        },
        "company":{
         "information":{
            "name":"Company name",
            "id":"1234"
            }
        }
   }
   vars={
     "var_1": "user.email",
     "var_2": "user.name",
     "company_name": "company.information.name"
   }
)

That’s all, process the data making .process() and as a result you will have:

    from DictMaper import MapDict
    result = MapDict(...).process()
    {
        "test_email@...": "Hi! user name, welcome to Company name",
        "company":"Company name"
    }
    ```

If your context dictionary contains nested dictionaries or lists, you can use this flag variable complex_dict_mapping=True to process more complex dictionaries.
But you must take into account the following restrictions:
- If the 'context' dictionary contains a key with a list, the name of the key must be the same in the 'vars' dictionary and in the 'output'
- You can only search at level 1 depth in the keys that contain LISTS in the 'context' dictionary, where the paths defined in the 'variables' dictionary will be searched.
- It is not possible to place a variable from the 'vars' dictionary in the 'output' dictionary as a key in any of the values ​​of the dictionaries that are within some list that are within the same 'output' dictionary.

Example:
1- output: the dictionary you want to receive, the variables you want to map must go with {}
```python
    output = {
        "contacts": [{
            "name": "{var_name}",
            "email": "{var_email}",
            "adresses": [{"main address": "{var_main_address}"}]
        }],
        "company name":"{company_name}"
    }

2- context: context is the data from which the information will be obtained:

context = {
    "contacts": [
        {
            "name":"user name",
            "email":"test_email@...",
            "address": {"main": "customer address"}
        },
        {
            "name":"user2 name2",
            "email":"test2_email2@...",
            "address": {"main": "customer address2"}
        }
    ],
    "company":{
        "information":{
            "name":"Company name",
            "id":"1234",
        }
    }
}

3- vars: vars are the variables you want to map to your output and the value is where they are located within context:

vars = {
    "contacts": [{
        "var_name": "name",
        "var_email": "email",
        "var_main_address": "address.main",
    }],
    "company_name": "company.information.name",
}

That’s all, process the data doing .process() and as a result you will have: `python from DictMaper import MapDict result = MapDict( output=output, context=context, vars=vars, complex_dict_mapping=True ) result.process() { "contacts":[ { "name":"user name", "email":"test_email@...", "adresses":[ { "main address":"customer address" } ] }, { "name":"user2 name2", "email":"test2_email2@...", "adresses":[ { "main address":"customer address2" } ] } ], "company name":"Company name" }

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

dictmaper-0.0.3.tar.gz (4.2 kB view details)

Uploaded Source

Built Distribution

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

dictmaper-0.0.3-py3-none-any.whl (7.3 kB view details)

Uploaded Python 3

File details

Details for the file dictmaper-0.0.3.tar.gz.

File metadata

  • Download URL: dictmaper-0.0.3.tar.gz
  • Upload date:
  • Size: 4.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.15.0 pkginfo/1.8.3 requests/2.27.1 setuptools/44.1.1 requests-toolbelt/1.0.0 tqdm/4.64.1 CPython/2.7.17

File hashes

Hashes for dictmaper-0.0.3.tar.gz
Algorithm Hash digest
SHA256 2e0a7ca6fc01f289c025b4a0c4b9e0cba2f1ce1e3411a6de9c33a8e1795f9af2
MD5 7d9a30c3921cb08730001aa93668425d
BLAKE2b-256 11147fc9eb15dd2d8234c0217d57219c28d79f3bac0fbc6150018bad91429475

See more details on using hashes here.

File details

Details for the file dictmaper-0.0.3-py3-none-any.whl.

File metadata

  • Download URL: dictmaper-0.0.3-py3-none-any.whl
  • Upload date:
  • Size: 7.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.15.0 pkginfo/1.8.3 requests/2.27.1 setuptools/44.1.1 requests-toolbelt/1.0.0 tqdm/4.64.1 CPython/2.7.17

File hashes

Hashes for dictmaper-0.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 7107a84f8ce2a689b190585e4c30cbca5f7a0c448ca934599dc3b47916dc6556
MD5 e0d236cd3b2062575ba35514c0958b78
BLAKE2b-256 a157fd52b0068697d5cd065ba192e221c6020196caa800c8ce0ebf6e7de9d07b

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