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