如何将字典指定值转为键并构建含后续值的嵌套字典
字典结构转换实现方案
针对你给出的字典转换需求,这里提供直观的Python实现方法,适合刚接触字典结构的学习者理解:
需求回顾
原字典:
d = {'a': 'aa', 'b': 'bb', 'c': 'cc', 'x':111, 'y': 222, 'z':333}
目标字典:
d2 = {'a': 'aa', 'b': 'bb', 'cc':{ 'x':111, 'y': 222, 'z':333}}
核心要求:将指定key(此处为'c')的value作为新key,该key之后的所有键值对作为新key对应的嵌套字典,同时保留指定key之前的键值对。
实现代码
d = {'a': 'aa', 'b': 'bb', 'c': 'cc', 'x':111, 'y': 222, 'z':333} target_key = 'c' # 这里可以替换成你需要的指定key # 将字典转为有序键值对列表(Python 3.7+ 字典默认有序) items_list = list(d.items()) # 定位指定key的位置 split_index = None for idx, (key, val) in enumerate(items_list): if key == target_key: split_index = idx break # 构建目标字典 d2 = {} # 添加指定key之前的所有键值对 for key, val in items_list[:split_index]: d2[key] = val # 提取新的嵌套key,并将后续键值对转为嵌套字典 nested_key = items_list[split_index][1] d2[nested_key] = dict(items_list[split_index+1:]) print(d2)
代码说明
- Python 3.7及以后版本的字典默认保持插入顺序,因此可以通过
items()获取有序的键值对列表,这是实现的基础。 - 遍历列表找到指定key的索引,以此为分割点,将原字典拆分为三部分:指定key之前的内容、指定key的value(作为新嵌套key)、指定key之后的内容(作为嵌套字典)。
- 最后将这三部分组合成目标字典即可,无论后续值是整数还是浮点数,都能正常处理。
内容的提问来源于stack exchange,提问作者Syner
相关产品推荐
相关产品推荐

