如何将列表中多个含Name键的字典嵌套到Parent Name键下?
问题与解决方法
问题说明
现有Python列表data_1,元素为多个包含'Name'键的字典:
data_1 = [{'Name': 'value 1'},{'Name': 'value 2'},{'Name': 'value 3'}]
需要将所有'Name'及其对应值嵌套到'Parent Name'键下,目标结构如下(注意:该结构存在Python字典键唯一性冲突):
[{'Parent Name':{ 'Name': 'value 1', 'Name': 'value 2', 'Name': 'value 3'}}]
关键注意点
Python字典的键是唯一的,如果直接创建包含多个相同'Name'键的字典,后面的键值对会完全覆盖前面的。你给出的目标结构实际运行后,'Parent Name'下只会保留最后一组'Name': 'value 3'。如果要保留所有值,建议将Name对应的值存储为列表,这是更合理的处理方式。
解决方案
方案1:按目标结构实现(存在键覆盖)
如果坚持要生成你指定的结构,代码如下(但会出现覆盖问题):
data_1 = [{'Name': 'value 1'},{'Name': 'value 2'},{'Name': 'value 3'}] parent_content = {} # 遍历合并所有Name键值对,重复键会被覆盖 for item in data_1: parent_content.update(item) result = [{'Parent Name': parent_content}] print(result) # 实际输出:[{'Parent Name': {'Name': 'value 3'}}]
方案2:保留所有Name值(推荐)
如果需要保留所有Name的对应值,将值存入列表是更稳妥的方式,实现代码:
data_1 = [{'Name': 'value 1'},{'Name': 'value 2'},{'Name': 'value 3'}] # 提取所有Name对应的值 name_values = [item['Name'] for item in data_1] # 构造最终嵌套结构 result = [{'Parent Name': {'Names': name_values}}] print(result) # 输出:[{'Parent Name': {'Names': ['value 1', 'value 2', 'value 3']}}]
内容的提问来源于stack exchange,提问作者Kumar
相关产品推荐
相关产品推荐

