鱼C论坛

 找回密码
 立即注册
查看: 906|回复: 6

[已解决]列表求助,,, 脑瓜痛了,

[复制链接]
发表于 2020-5-30 20:59:06 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
li   =        [
        ['张XX', ['周1', '语文', '早班', 'xxx', 'YYY']],
        ['张XX', ['周2', '数学', '中班', 'xxx', 'YYY']],
        ['张XX', ['周3', '语文', '中班', 'xxx', 'YYY']],
        ['张XX', ['周4', '体育', '晚班', 'xxx', 'YYY']],
        ['张XX', ['周5', '语文', '中班', 'xxx', 'YYY']],
        ['张XX', ['周6', '音乐', '早班', 'xxx', 'YYY']],
        ['张XX', ['周7', '语文', '中班', 'xxx', 'YYY']],

        ['高美女', ['周1', '高数', '早班', 'xxx', 'YYY']],
        ['高美女', ['周2', '英文', '晚班', 'xxx', 'YYY']],
        ['高美女', ['周3', '体育', '早班', 'xxx', 'YYY']],
        ['高美女', ['周4', '音乐', '晚班', 'xxx', 'YYY']],
        ['高美女', ['周5', '比赛', '中班', 'xxx', 'YYY']],
        ['高美女', ['周6', '先锋', '晚班', 'xxx', 'YYY']],
        ['高美女', ['周7', '逛街', '早班', 'xxx', 'YYY']]       
        ]

我现在有这么一个列表。    我要把它子元素中,第1个元素相同的, 把它再合成一个列表。

效果如下
new_list = [ [ '张XX' ,[   ['周1', '语文', '早班', 'xxx', 'YYY'],
                                     ['周2', '数学', '中班', 'xxx', 'YYY'],       
                                     ['周3', '语文', '中班', 'xxx', 'YYY'],
                                     ['周4', '体育', '晚班', 'xxx', 'YYY'],
                                     ['周5', '语文', '中班', 'xxx', 'YYY'],
                                     ['周6', '音乐', '早班', 'xxx', 'YYY'],
                                     ['周7', '语文', '中班', 'xxx', 'YYY']
                                ]    ,
                   ['高美女' ,[     ['周1', '高数', '早班', 'xxx', 'YYY'],
                                        ['周2', '英文', '晚班', 'xxx', 'YYY'],
                                        ['周3', '体育', '早班', 'xxx', 'YYY'],
                                        ['周4', '音乐', '晚班', 'xxx', 'YYY'],
                                        ['周5', '比赛', '中班', 'xxx', 'YYY'],
                                        ['周6', '先锋', '晚班', 'xxx', 'YYY'],
                                        ['周7', '逛街', '早班', 'xxx', 'YYY']
                                 ]                       
               

                  ]
       

有什么办法可以弄这样??求教  ;    原列表中,相同人名的数据, 不一定是固定7条记录, 有可能是6条 或5条;
最佳答案
2020-5-30 21:40:46
本帖最后由 永恒的蓝色梦想 于 2020-5-30 21:50 编辑
  1. def function(array):
  2.     result={}

  3.     for name,values in array:
  4.         try:
  5.             result[name].append(values)
  6.         except KeyError:
  7.             result[name]=[values]

  8.     return [[i,j]for i,j in result.items()]
复制代码
  1. >>> li   =        [
  2.         ['张XX', ['周1', '语文', '早班', 'xxx', 'YYY']],
  3.         ['张XX', ['周2', '数学', '中班', 'xxx', 'YYY']],
  4.         ['张XX', ['周3', '语文', '中班', 'xxx', 'YYY']],
  5.         ['张XX', ['周4', '体育', '晚班', 'xxx', 'YYY']],
  6.         ['张XX', ['周5', '语文', '中班', 'xxx', 'YYY']],
  7.         ['张XX', ['周6', '音乐', '早班', 'xxx', 'YYY']],
  8.         ['张XX', ['周7', '语文', '中班', 'xxx', 'YYY']],

  9.         ['高美女', ['周1', '高数', '早班', 'xxx', 'YYY']],
  10.         ['高美女', ['周2', '英文', '晚班', 'xxx', 'YYY']],
  11.         ['高美女', ['周3', '体育', '早班', 'xxx', 'YYY']],
  12.         ['高美女', ['周4', '音乐', '晚班', 'xxx', 'YYY']],
  13.         ['高美女', ['周5', '比赛', '中班', 'xxx', 'YYY']],
  14.         ['高美女', ['周6', '先锋', '晚班', 'xxx', 'YYY']],
  15.         ['高美女', ['周7', '逛街', '早班', 'xxx', 'YYY']]
  16.         ]
  17. >>> newlist=function(li)
  18. >>> newlist
  19. [['张XX', [['周1', '语文', '早班', 'xxx', 'YYY'], ['周2', '数学', '中班', 'xxx', 'YYY'], ['周3', '语文', '中班', 'xxx', 'YYY'], ['周4', '体育', '晚班', 'xxx', 'YYY'], ['周5', '语文', '中班', 'xxx', 'YYY'], ['周6', '音乐', '早班', 'xxx', 'YYY'], ['周7', '语文', '中班', 'xxx', 'YYY']]], ['高美女', [['周1', '高数', '早班', 'xxx', 'YYY'], ['周2', '英文', '晚班', 'xxx', 'YYY'], ['周3', '体育', '早班', 'xxx', 'YYY'], ['周4', '音乐', '晚班', 'xxx', 'YYY'], ['周5', '比赛', '中班', 'xxx', 'YYY'], ['周6', '先锋', '晚班', 'xxx', 'YYY'], ['周7', '逛街', '早班', 'xxx', 'YYY']]]]
  20. >>>
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-5-30 21:12:57 | 显示全部楼层
这个就相当于列表的嵌套呀
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-30 21:27:24 | 显示全部楼层
本帖最后由 沐羽尘 于 2020-5-30 21:36 编辑

看了你的题突然有了想法


  1. li   =        [
  2.         ['张XX', ['周1', '语文', '早班', 'xxx', 'YYY']],
  3.         ['张XX', ['周2', '数学', '中班', 'xxx', 'YYY']],
  4.         ['张XX', ['周3', '语文', '中班', 'xxx', 'YYY']],
  5.         ['张XX', ['周4', '体育', '晚班', 'xxx', 'YYY']],
  6.         ['张XX', ['周5', '语文', '中班', 'xxx', 'YYY']],
  7.         ['张XX', ['周6', '音乐', '早班', 'xxx', 'YYY']],
  8.         ['张XX', ['周7', '语文', '中班', 'xxx', 'YYY']],

  9.         ['高美女', ['周1', '高数', '早班', 'xxx', 'YYY']],
  10.         ['高美女', ['周2', '英文', '晚班', 'xxx', 'YYY']],
  11.         ['高美女', ['周3', '体育', '早班', 'xxx', 'YYY']],
  12.         ['高美女', ['周4', '音乐', '晚班', 'xxx', 'YYY']],
  13.         ['高美女', ['周5', '比赛', '中班', 'xxx', 'YYY']],
  14.         ['高美女', ['周6', '先锋', '晚班', 'xxx', 'YYY']],
  15.         ['高美女', ['周7', '逛街', '早班', 'xxx', 'YYY']]        
  16.         ]

  17. name = []
  18. new_list = []
  19. for each in li:
  20.     if each[0] in name:#如果head在name里,就把其后面的信息加到new_list里
  21.         for index in new_list:
  22.             if index[0] == each[0]:
  23.                 index[1].append(each[1])
  24.     else :
  25.         name.append(each[0])#如果head不在name里,就把其添加到name里
  26.         new_list.append(each)#并把其后面的信息加到new_list里

  27. #打印列表
  28. for each in new_list:
  29.     for i in each:        
  30.         print(i)
复制代码

运行了一下,这个应该可行
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-30 21:40:46 | 显示全部楼层    本楼为最佳答案   
本帖最后由 永恒的蓝色梦想 于 2020-5-30 21:50 编辑
  1. def function(array):
  2.     result={}

  3.     for name,values in array:
  4.         try:
  5.             result[name].append(values)
  6.         except KeyError:
  7.             result[name]=[values]

  8.     return [[i,j]for i,j in result.items()]
复制代码
  1. >>> li   =        [
  2.         ['张XX', ['周1', '语文', '早班', 'xxx', 'YYY']],
  3.         ['张XX', ['周2', '数学', '中班', 'xxx', 'YYY']],
  4.         ['张XX', ['周3', '语文', '中班', 'xxx', 'YYY']],
  5.         ['张XX', ['周4', '体育', '晚班', 'xxx', 'YYY']],
  6.         ['张XX', ['周5', '语文', '中班', 'xxx', 'YYY']],
  7.         ['张XX', ['周6', '音乐', '早班', 'xxx', 'YYY']],
  8.         ['张XX', ['周7', '语文', '中班', 'xxx', 'YYY']],

  9.         ['高美女', ['周1', '高数', '早班', 'xxx', 'YYY']],
  10.         ['高美女', ['周2', '英文', '晚班', 'xxx', 'YYY']],
  11.         ['高美女', ['周3', '体育', '早班', 'xxx', 'YYY']],
  12.         ['高美女', ['周4', '音乐', '晚班', 'xxx', 'YYY']],
  13.         ['高美女', ['周5', '比赛', '中班', 'xxx', 'YYY']],
  14.         ['高美女', ['周6', '先锋', '晚班', 'xxx', 'YYY']],
  15.         ['高美女', ['周7', '逛街', '早班', 'xxx', 'YYY']]
  16.         ]
  17. >>> newlist=function(li)
  18. >>> newlist
  19. [['张XX', [['周1', '语文', '早班', 'xxx', 'YYY'], ['周2', '数学', '中班', 'xxx', 'YYY'], ['周3', '语文', '中班', 'xxx', 'YYY'], ['周4', '体育', '晚班', 'xxx', 'YYY'], ['周5', '语文', '中班', 'xxx', 'YYY'], ['周6', '音乐', '早班', 'xxx', 'YYY'], ['周7', '语文', '中班', 'xxx', 'YYY']]], ['高美女', [['周1', '高数', '早班', 'xxx', 'YYY'], ['周2', '英文', '晚班', 'xxx', 'YYY'], ['周3', '体育', '早班', 'xxx', 'YYY'], ['周4', '音乐', '晚班', 'xxx', 'YYY'], ['周5', '比赛', '中班', 'xxx', 'YYY'], ['周6', '先锋', '晚班', 'xxx', 'YYY'], ['周7', '逛街', '早班', 'xxx', 'YYY']]]]
  20. >>>
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-30 22:08:03 | 显示全部楼层
沐羽尘 发表于 2020-5-30 21:27
看了你的题突然有了想法
运行了一下,这个应该可行

谢谢 大侠,  楼下这位写得好像更高大尚 。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-30 22:08:38 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-30 22:10:59 | 显示全部楼层
maxliu06 发表于 2020-5-30 22:08
谢谢 大侠,  楼下这位写得好像更高大尚 。

其实是会更快一点
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-6-3 07:09

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表