鱼C论坛

 找回密码
 立即注册
查看: 1514|回复: 5

[已解决]统计列表b中的元素在a列表中对应的值得和

[复制链接]
发表于 2020-10-21 07:25:27 | 显示全部楼层 |阅读模式

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

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

x
a=[28, 25, 7, 21, 17, 15, 26, 13, 12, 36, 13, 9, 11, 10, 9]
b=[4, 9, 5, 6, 8, 9, 2, 8, 4, 5, 7, 2, 5, 4, ]
列表B和列表a是对应的,需要把列表B中元素对应的值找出来统计出和,比如4对应在列表a中有三个值分别是28,36,9,那么统计出4:36次输出[(4,36),(5,次数)...以此类推],求大神帮忙解决,谢谢
最佳答案
2020-10-21 08:39:19
  1. a = [28, 25, 7, 21, 17, 15, 26, 13, 12, 36, 13, 9, 11, 10, 9]
  2. b = [ 4,  9, 5,  6,  8,  9,  2,  8,  4,  5,  7, 2,  5,  4]
  3. c = {}
  4. for i,each in enumerate(b):
  5.     if each not in c:
  6.         c[each] = a[i]
  7.     else:
  8.         c[each] += a[i]
  9. print(c)
  10. d = [each for each in c.items()]
  11. print(d)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-10-21 07:50:25 From FishC Mobile | 显示全部楼层
本帖最后由 hrp 于 2020-10-21 07:55 编辑

没看懂,什么对应关系?像是相对位置或是位置百分比?输出又是什么关系?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-10-21 08:08:28 | 显示全部楼层
hrp 发表于 2020-10-21 07:50
没看懂,什么对应关系?像是相对位置或是位置百分比?输出又是什么关系?

b列表中3个4分别对应a列表中的三个值28,36,9,那么4对应的值就是三个数字之和,其他的也是,不重复的映射就可以,重复的我不知道怎么弄
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-21 08:39:19 | 显示全部楼层    本楼为最佳答案   
  1. a = [28, 25, 7, 21, 17, 15, 26, 13, 12, 36, 13, 9, 11, 10, 9]
  2. b = [ 4,  9, 5,  6,  8,  9,  2,  8,  4,  5,  7, 2,  5,  4]
  3. c = {}
  4. for i,each in enumerate(b):
  5.     if each not in c:
  6.         c[each] = a[i]
  7.     else:
  8.         c[each] += a[i]
  9. print(c)
  10. d = [each for each in c.items()]
  11. print(d)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-21 09:22:37 | 显示全部楼层
本帖最后由 抉择啊 于 2020-10-21 09:27 编辑
  1. a = [28,25,7,21,17,15,26,13,12,36,13,9,11,10,9]
  2. b = [4,9,5,6,8,9,2,8,4,5,7,2,5,4]
  3. b1 = b.copy()
  4. dict1 = {}
  5. for k in b1:
  6.     if dict1.get(k):
  7.         dict1[k].append(b1.index(k))
  8.         b1[b1.index(k)] = '结束'
  9.     else:
  10.         dict1[k] = [b1.index(k)]
  11.         b1[b1.index(k)] = '结束'

  12. print(dict1)
  13. # {4: [0, 8, 13], 9: [1, 5], 5: [2, 9, 12], 6: [3], 8: [4, 7], 2: [6, 11], 7: [10]}

  14. for k in dict1:
  15.     s = 0
  16.     for i in dict1[k]:
  17.         s += a[i]
  18.     dict1[k] = s

  19. print(dict1)
  20. # {4: 50, 9: 40, 5: 54, 6: 21, 8: 30, 2: 35, 7: 13}
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-27 02:06

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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