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)