wangbin13585 2022-11-26 22:16 采纳率: 0%
浏览 16
已结题

python列表嵌套按条件合并

问题遇到的现象和发生背景

列表中子列表对比第一个值如果相同就把后面的值合并到一起

用代码块功能插入代码,请勿粘贴截图

[['66', '1111111111'], ['82', '63406467302'], ['129', '123456'], ['123', '456'], ['82', '63341550599'], ['129', '63406465346']]

我想要达到的结果

[['66', '1111111111'], ['82', '63406467302', '63341550599'], ['129', '123456', '63406465346'], ['123', '456']]

  • 写回答

7条回答 默认 最新

  • chuifengde 2022-11-26 22:48
    关注
    获得4.95元问题酬金
    import itertools as it
    
    l = [['66', '1111111111'], ['82', '63406467302'], ['129', '123456'],['129', '123456888'] , ['123', '456'], ['82', '63341550599'], ['129', '63406465346']]
    
    res = sorted(l, key = lambda x: x[0])
    rr = it.groupby(res, key = lambda x: x[0])
    result = []
    for i in rr:
        r = (i[0], ) + list(zip(*i[1]))[1]
        result.append(list(r))
    print(result)
    --result
    [['123', '456'], ['129', '123456', '123456888', '63406465346'], ['66', '1111111111'], ['82', '63406467302', '63341550599']]
    
    再给你来个简单的:
    from collections import defaultdict
    
    l = [['66', '1111111111'], ['82', '63406467302'], ['129', '123456'],['129', '123456888'] , ['123', '456'], ['82', '63341550599'], ['129', '63406465346']]
    
    d = defaultdict(list)
    for i in l:
        d[i[0]] += i[1:]
    
    result = [[k, *v] for k, v in d.items()]
    print(result)
    
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 12月4日
  • 赞助了问题酬金15元 11月26日
  • 创建了问题 11月26日

悬赏问题

  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!
  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?