У меня есть путь. Используя dpath-utils, я создаю словарь, создавая подключи в соответствии с длиной пути. Но в текущем примере длина моего пути коротка, как показано ниже.
примечания : если бы это был длинный путь: "/ cbghb6b2861f919f6ffc238a0c5cffed63436 / bbc238a0c5cffed6343fc238a0c5cffed63436". Я объяснил это потому, что по этой причине я использовал dpath.utils
. Я добавляю путь к соответствующему ключу словаря, используя dpath.utils, как показано ниже.
model_dict = {}
path = "/b6b2861f919f6fc238a0c5cffed63436"
data= {
'metadata': {
'author': None,
'column_name': [...],
'date': datetime.datetime(20...1, 870998),
'metrics': {...},
'name': None, 'source_code_version': None},
'model': <src.python.ml.optis...10f4695f8>
}
}
dpath.util.set(model_dict, path, data)
model_dict = {
'b6b2861f919f6fc238a0c5cffed63436':{
'metadata': {
'author': None,
'column_name': [...],
'date': datetime.datetime(20...1, 870998),
'metrics': {...},
'name': None, 'source_code_version': None},
'model': <src.python.ml.optis...10f4695f8>
}
}
dpath.util.get(model_dict, path)
но я получаю эту ошибку при вызове с путем.
Вывод:
File "/Users/****/Documents/**/src/python/ws/***/restful/**/**.py", line 30, in get_model
return dpath.util.get(self.persisted_file , path)
File "/Users/*****/.virtualenvs/*****/lib/python3.7/site-packages/dpath/util.py", line 171, in get
results = dpath.segments.fold(obj, f, [])
File "/Users/****/.virtualenvs/******/lib/python3.7/site-packages/dpath/segments.py", line 349, in fold
for pair in walk(obj):
File "/Users/******/.virtualenvs/*******/lib/python3.7/site-packages/dpath/segments.py", line 62, in walk
for found in walk(v, location + (k,)):
File "/Users/*****/.virtualenvs/*******/lib/python3.7/site-packages/dpath/segments.py", line 62, in walk
for found in walk(v, location + (k,)):
File "/Users/******/.virtualenvs/********/lib/python3.7/site-packages/dpath/segments.py", line 48, in walk
for k, v in kvs(obj):
File "/Users/*****/.virtualenvs/****/lib/python3.7/site-packages/dpath/segments.py", line 16, in kvs
return zip(range(len(node)), node)
TypeError: object of type 'RegressionModel' has no len()
но когда я звоню напрямую, проблем нет, но я не не хочу звонить напрямую. потому что я мог бы хотеть получить значение в одном из его подразделов. и как низко это.
model_dict.get("b6b2861f919f6fc238a0c5cffed63436")
Выход:
{
'metadata': {
'author': None,
'column_name': [...],
'date': datetime.datetime(20...1, 870998),
'metrics': {...},
'name': None, 'source_code_version': None},
'model': <src.python.ml.optis...10f4695f8>
}
}