python:dict
Python: Dict
- nested dict to flatten dict
import pandas as pd d = {'a': 1, 'c': {'a': 2, 'b': {'x': 5, 'y' : 10}}, 'd': [1, 2, 3]} df = pd.json_normalize(d, sep='.') print(df.to_dict(orient='records')[0]) # https://stackoverflow.com/questions/6027558/flatten-nested-dictionaries-compressing-keys
- nested dict to object
from types import SimpleNamespace import json class Config(SimpleNamespace): def __init__(self, config_dict): super().__init__(**config_dict) def dict2obj(d): return json.loads(json.dumps(d), object_hook=Config) config_dict = {'a': 1, 'b': {'c': 2}, 'd': ['hi', {'foo': 'bar'}]} config = dict2obj(config_dict) print(config.a) # https://stackoverflow.com/questions/1305532/convert-nested-python-dict-to-object
- nested dict to namedtuple
from collections import namedtuple def make_config(cfg): if isinstance(cfg, dict): return make_config_dict(cfg) elif isinstance(cfg, list): return make_config_list(cfg) else: raise NotImplementedError() def make_config_dict(cfg): Config = namedtuple('Config', cfg.keys()) values = list() for value in cfg.values(): if isinstance(value, dict): value = make_config_dict(value) elif isinstance(value, list): value = make_config_list(value) values.append(value) return Config(*values) def make_config_list(cfg): values = list() for value in cfg: if isinstance(value, dict): value = make_config_dict(value) elif isinstance(value, list): value = make_config_list(value) values.append(value) return values config_dict = {'a': 1, 'b': {'c': 2}, 'd': ['hi', {'foo': 'bar'}]} config = make_config(config_dict) print(config)
python/dict.txt · 마지막으로 수정됨: 2024/03/23 02:42 저자 127.0.0.1