Конвертировать все элементы словаря байтового кода в полный словарь. Получение всех типов данных в виде строк - PullRequest
0 голосов
/ 03 октября 2019

У меня есть сложный вложенный словарь объектов байт-кода, который я пытаюсь получить в его первоначальном виде, т.е. все остальные вложенные значения также должны быть словарями. Я использую HBase или HappyBase для подключения. ###

Я пытался использовать Literal Eval, который также не помог мне.

import happybase
tablename='ABC'
conn = happybase.Connection(host='localhost',autoconnect=False)
conn.open()
table = conn.table(table_name)
new_data = literal_eval(table.row('1'))

У меня есть словарь объекта байт-кода.

import happybase
tablename='ABC'
conn = happybase.Connection(host='localhost',autoconnect=False)
conn.open()
table = conn.table(table_name)
new_data = table.row('1')

Строка возвращает словарь ниже в виде объекта байт-кода.

new_data={b'Key1':b'Human',
b'Key2':b'"[{\"bmi\":27.9,\"age\":19.0,\"children\":0.0,\"charges\":16884.924,\"region_L\":6,\"sex_L\":0,\"smoker_L\":7}]"',
b'Key3':b'[A,B,C,D,E]'}

Я использую приведенный ниже код, чтобы получить его в строку:

new_data = {
    key.decode() if isinstance(key, bytes) else key:
    val.decode() if isinstance(val, bytes) else val
    for key, val in new_data.items()
}

Мои данные выглядят примерно так после применения вышеуказанного цикла

new_data={"Key1":"Human",
"Key2":"[{\"bmi\":27.9,\"age\":19.0,\"children\":0.0,\"charges\":16884.924,\"region_L\":6,\"sex_L\":0,\"smoker_L\":7}",
"Key3":"[A,B,C,D,E]"}

Я хочу, чтобы мои данные выглядели примерно так, как показано ниже.

  • Значение Key2 должно быть словарем
  • Значение ключа 3 должно быть списком
new_data={"Key1":"Human",
"Key2":"{"bmi":27.9,"age":19.0,"children":0.0,"charges":16884.924,"region_L":6,"sex_L":0,"smoker_L":7}",
"Key3":"[A,B,C,D,E]"}

Может кто-нибудь предложить, пожалуйста, способ сделать это? Или помогите мне с рекурсивной функцией, поскольку у меня могут быть сложные словари и в ближайшем будущем.

...