Python如何从指定列表生成按唯一值分组的嵌套列表?
解决方法:组合列表元素生成嵌套结构
这其实很简单,不需要依赖特殊的Python函数,用基础的列表操作就能轻松实现你的需求。核心思路是先把var1的所有条目和var2的条目分开,再将它们逐一组合。
方法一:用列表推导式(简洁高效)
这种方式代码更紧凑,适合熟悉Python列表操作的场景:
l1 = [['var1', '2'], ['var1', '5'], ['var1', 'a'], ['var2', '90']] # 提取所有var1对应的条目 var1_entries = [item for item in l1 if item[0] == 'var1'] # 提取var2对应的条目(这里假设只有一个var2,用next()快速获取) var2_entry = next(item for item in l1 if item[0] == 'var2') # 生成目标嵌套列表 result = [[var1_item, var2_entry] for var1_item in var1_entries] print(result) # 输出:[[['var1','2'],['var2','90']],[['var1','5'],['var2','90']],[['var1','a'], ['var2','90']]]
方法二:用普通循环(更易理解)
如果刚接触Python,用循环的方式会更直观:
l1 = [['var1', '2'], ['var1', '5'], ['var1', 'a'], ['var2', '90']] var1_entries = [] var2_entry = None # 先拆分出var1和var2的条目 for item in l1: if item[0] == 'var1': var1_entries.append(item) elif item[0] == 'var2': var2_entry = item # 组合生成结果 result = [] for var1_item in var1_entries: result.append([var1_item, var2_entry]) print(result)
补充说明
如果你的数据里可能有多个var2条目,只需要把var2_entry改成列表,然后在组合时调整逻辑即可。但根据你给出的示例,上述代码完全可以满足需求。
内容的提问来源于stack exchange,提问作者Manuel Santi
相关产品推荐
相关产品推荐

