Python library to trace path of a particular key inside a nested dict
- For stable version
- pip install trace-dkey
- For development
- git clone https://github.com/Agent-Hellboy/trace-dkey
- cd trace-dkey
- python -m venv .venv
- source .venv/bin/activate
For more details, you can refer to the documentation.
- The value returned by the trace function is an array of paths, where each path is an array of dictionary keys.
- Because of that, the library can be used in a practical way by taking advantage of this format.
- In the example below we use the returned path to iterate over the dictionary keys and print the key value:
from trace_dkey import trace
l={'a':{'b':{'c':{'d':{'e':{'f':1}}}}}}
paths = trace(l,'f')
for path in paths:
dic = l
for key in path:
dic = dic[key]
print(dic)
- This addresses a wide range of questions asked on StackOverflow about key inside a nested dict
- At least 13 duplicate questions can be found on Stackoverflow
- This can be tracked on https://you.com/search?q=find%20key%20in%20nested%20dictionary%20python
Added example scripts demonstrating how to use trace-dkey with responses from popular APIs. These examples can be found in the examples folder:
- GitHub API Example (github_api_example.py): Demonstrates fetching repository information
- OpenWeatherMap API Example (openweathermap_api_example.py): Retrieves current weather data
- JSONPlaceholder API Example (jsonplaceholder_api_example.py): Shows how to interact with a mock REST API
To run these examples:
- Install the required dependencies:
pip install -r examples/requirements.txt
- For the OpenWeatherMap example, you'll need to sign up for a free API key at https://openweathermap.org/ and set it as an environment variable:
export OPENWEATHERMAP_API_KEY=your_api_key_here
- Run the examples:
python examples/github_api_example.py
python examples/openweathermap_api_example.py
python examples/jsonplaceholder_api_example.py
These examples demonstrate how to use trace-dkey to find specific keys in nested JSON responses from real-world APIs.
Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.