A collection of nice utility functions for python
- Free software: GNU General Public License v3
- Documentation: https://understreck.readthedocs.io.
- Perform a safe get on a nested dictionary with the nested_get function
- Split a list into chunks
- Filter a list of dictionaries
- Strip indents from multiline strings
Get example:
import understreck as _ test_dictionary = { "foo": { "second_level": {"third_level": "it works", "third_level_sibling": False}, "second_level_list": ["Hello", "World", {"planet": "Earth"}, ["Hello", "World", {"planet": "jupiter"}, ]], } } # Using dot delimited strings result = _.get(test_dictionary, "foo.second_level.third_level") # result == "it works" result = _.get(test_dictionary, "foo.second_level.DOES_NOT_EXIST") # result == None # Using a list or tuple result = _.get(test_dictionary, ["foo", "second_level", "third_level"]) # result == "it works" result = _.get(test_dictionary, ["foo", "second_level", "DOES_NOT_EXIST"]) # result == None # Getting elements in list result = _.get(test_dictionary, "foo.second_level_list[0]") # result == "Hello" result = _.get(test_dictionary, "foo.second_level_list[1]") # result == "World" result = _.get(test_dictionary, "foo.second_level_list[2].planet") # result == "Earth" # Getting a property in a nested list nested_list = { "foo": { "bar": [ "x", [ "first", "second", {"name": "Hello World"} ] ] } } result = _.get(nested_list, "foo.bar[1][2].name") # result == "Hello World"
Chunks example:
import understreck as _ to_chunk = ["one", "two", "three", "four", "five"] result = _.chunks.split(to_chunk, 2) # result == [["one", "two", "three"], ["four", "five"]]
Filter example:
import understreck as _ users = [ {"user": "barney", "age": 36, "active": True}, {"user": "fred", "age": 40, "active": False}, ] # Using a lambda function result = _.filter(users, lambda x: not x.get("active")) # result == [{"user": "fred", "age": 40, "active": False}] # Using partial dictionary result = _.filter(users, {"age": 36, "active": True}) # result == [{"user": "barney", "age": 36, "active": True}] # Using a list with a property name and value result = _.filter(users, ["active", False]) # result == [{"user": "fred", "age": 40, "active": False}] # Using a list with a property name. The value must be truthy. result = _.filter(users, ["active"]) # result == [{"user": "barney", "age": 36, "active": True}]
Strip indents example:
import understreck as _ def some_function(): to_strip = """This is a multi-line string""" _.strip(to_strip) # "This is a\nmulti-line\nstring"
I have to credit the Lodash project for inspiration!
This package was created with Cookiecutter and the audreyr/cookiecutter-pypackage project template.