鱼C论坛

 找回密码
 立即注册
查看: 1437|回复: 2

[已解决]合并相同元素(key)数组(保留重复value值)

[复制链接]
发表于 2018-3-17 17:44:34 | 显示全部楼层 |阅读模式

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

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

x
文档中数据:
11   22
11   23
11   22
12   21
13   22
13   11
12   2
13   22
10   2
15   10

输出为:
10   2
11   22  22  23
12   21  2
13   22  22   11
15   10


key值可以不要求排序,我用了两层for循坏,但不能去除重复值,例如出现[11,  22],  [11, 22, 22],[11,22,22,23]。大神们求助方法?
最佳答案
2018-3-17 18:46:15
  1. #!/usr/bin/python
  2. data = '''11 22
  3. 11 23
  4. 11 22
  5. 12 21
  6. 13 22
  7. 13 11
  8. 12 2
  9. 13 22
  10. 10 2
  11. 15 10'''
  12. a = sorted(list(set([i.split(' ')[0] for i in data.split('\n')])))
  13. b = sorted([i.split(' ') for i in data.split('\n')])

  14. for key in a:
  15.         print(key, end = ' ')
  16.         for i in b:
  17.                 if i[0] == key:
  18.                         print(i[1], end = ' ')
  19.         print()

  20. ##  输出结果:
  21. ##  10 2
  22. ##  11 22 22 23
  23. ##  12 2 21
  24. ##  13 11 22 22
  25. ##  15 10
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-3-17 18:29:07 | 显示全部楼层
用列表做合集,再用set()转换呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-17 18:46:15 From FishC Mobile | 显示全部楼层    本楼为最佳答案   
  1. #!/usr/bin/python
  2. data = '''11 22
  3. 11 23
  4. 11 22
  5. 12 21
  6. 13 22
  7. 13 11
  8. 12 2
  9. 13 22
  10. 10 2
  11. 15 10'''
  12. a = sorted(list(set([i.split(' ')[0] for i in data.split('\n')])))
  13. b = sorted([i.split(' ') for i in data.split('\n')])

  14. for key in a:
  15.         print(key, end = ' ')
  16.         for i in b:
  17.                 if i[0] == key:
  18.                         print(i[1], end = ' ')
  19.         print()

  20. ##  输出结果:
  21. ##  10 2
  22. ##  11 22 22 23
  23. ##  12 2 21
  24. ##  13 11 22 22
  25. ##  15 10
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-3-29 21:12

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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