字段刷新方法

def refresh_dict(original_dict, rules):
    updated_dict = original_dict.copy()

    for field, rule in rules.items():
        field_chain = field.split('.')
        current_dict = updated_dict

        for key in field_chain[:-1]:
            if key in current_dict:
                current_dict = current_dict[key]
            else:
                break

        last_key = field_chain[-1]
        if last_key in current_dict:
            current_value = current_dict[last_key]
            updated_value = apply_rule(current_value, rule)
            current_dict[last_key] = updated_value

    return updated_dict

def apply_rule(value, rule):
    if rule == 'str':
        return str(value)
    elif rule == 'float':
        return float(value)
    # Add more rules as needed
    else:
        return value

# 示例用法
dict1 = {
    'name': 'RxStart',
    'apply_time': 20000,
    'content': {
        'id': 2,
        'mode': 'kuantiao',
        'time': {
            'apply_time': 20000,
            'valid': 24555,
        },
        'band': {
            'freq': {
                'band': 'BAND_3',
                'freq': 299990,
            },
            'defs': [1, 0, 1, 1],
            'issinal': 1
        }
    }
}

rules = {
    'name': 'str',
    'apply_time': 'str',
    'content.id': 'str',
    'content.time.apply_time': 'float',
    'band.freq.freq': 'float'
}

updated_dict = refresh_dict(dict1, rules)
print(updated_dict)

posted @ 2024-01-14 23:59  岁叶年华  阅读(18)  评论(0)    收藏  举报