Source code for hal.data.dicts

# -*- coding: utf-8 -*-

"""Typical operations on dicts made easy"""

import numpy as np

from hal.strings.utils import how_similar_are


[docs]def how_similar_dicts(dict1, dict2): """Calculates similarity :param dict1: Dictionary :param dict2: Dictionary :return: measure of how much similar values of dictionaries are """ values = [] for k in dict1: # iterate keys if k in dict2 and dict1[k] and dict2[k]: values.append( how_similar_are(str(dict1[k]), str(dict2[k])) ) return np.mean(values) # average
[docs]def get_inner_keys(dictionary): """Gets 2nd-level dictionary keys :param dictionary: dict :return: inner keys """ keys = [] for key in dictionary.keys(): inner_keys = dictionary[key].keys() keys += [ key + " " + inner_key # concatenate for inner_key in inner_keys ] return keys
[docs]def get_inner_data(dictionary): """Gets 2nd-level data into 1st-level dictionary :param dictionary: dict :return: with 2nd-level data """ out = {} for key in dictionary.keys(): inner_keys = dictionary[key].keys() for inner_key in inner_keys: new_key = key + " " + inner_key # concatenate out[new_key] = dictionary[key][inner_key] return out