鱼C论坛

 找回密码
 立即注册
查看: 1721|回复: 0

[技术交流] 字典与集合应用

[复制链接]
发表于 2020-5-26 19:04:33 | 显示全部楼层 |阅读模式

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

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

x
将此文本按照相同用户每次只输出3行数据(第一列为用户),不满足用户最后全部输出。
  1. 1005495524----a111111
  2. 1005495524----abc123
  3. 1005495524----aini1314
  4. 1005495524----iloveyou
  5. 1005495524----q1w2e3r4
  6. 1005495524----qq123123
  7. 1044122462aa----a111111
  8. 1044122462aa----abc123
  9. 1044122462aa----aini1314
  10. 1044122462aa----iloveyou
  11. 1044122462aa----q1w2e3r4
  12. 1044122462aa----qq123123
  13. 1095591332aa----a111111
  14. 1095591332aa----abc123
  15. 1095591332aa----aini1314
  16. 1095591332aa----iloveyou
  17. 1095591332aa----q1w2e3r4
  18. 1095591332aa----qq123123
  19. 1111qqqq1111----a111111
  20. 1111qqqq1111----abc123
  21. 1111qqqq1111----aini1314
  22. 1111qqqq1111----iloveyou
  23. 1111qqqq1111----q1w2e3r4
  24. 1111qqqq1111----qq123123
  25. 111qqq111----a111111
  26. 111qqq111----abc123
  27. 111qqq111----aini1314
  28. 111qqq111----iloveyou
  29. 111qqq111----q1w2e3r4
  30. 111qqq111----qq123123
复制代码

结果:
  1. 1044122462aa---a111111
  2. 1044122462aa---abc123
  3. 1044122462aa---aini1314
  4. 1005495524---a111111
  5. 1005495524---abc123
  6. 1005495524---aini1314
  7. 1111qqqq1111---a111111
  8. 1111qqqq1111---abc123
  9. 1111qqqq1111---aini1314
  10. 111qqq111---a111111
  11. 111qqq111---abc123
  12. 111qqq111---aini1314
  13. 1095591332aa---a111111
  14. 1095591332aa---abc123
  15. 1095591332aa---aini1314
  16. 1044122462aa---iloveyou
  17. 1044122462aa---q1w2e3r4
  18. 1044122462aa---qq123123
  19. 1005495524---iloveyou
  20. 1005495524---q1w2e3r4
  21. 1005495524---qq123123
  22. 1111qqqq1111---iloveyou
  23. 1111qqqq1111---q1w2e3r4
  24. 1111qqqq1111---qq123123
  25. 111qqq111---iloveyou
  26. 111qqq111---q1w2e3r4
  27. 111qqq111---qq123123
  28. 1095591332aa---iloveyou
  29. 1095591332aa---q1w2e3r4
  30. 1095591332aa---qq123123

  31. 请按任意键继续. . .

复制代码

代码:
  1. #!/usr/bin/env python3
  2. #coding=utf-8

  3. #用户名
  4. userinfo = {}
  5. with open('1.txt','r') as f:
  6.     for each_line in f:
  7.         temp = (each_line.split('----'))
  8.         #去掉换行符
  9.         if '\n' in temp[1]: temp[1] = temp[1][:-1]
  10.         #用户名在字典中,追加数据
  11.         if temp[0] in userinfo:
  12.             userinfo[temp[0]].append(temp[1])
  13.         else:
  14.             userinfo[temp[0]] = [temp[1]]

  15. #输出条件
  16. limit = 3
  17. #需要处理的用户
  18. reuser = set(userinfo.keys())
  19. rem_usr = set()
  20. #不满足条件的用户
  21. rem_usr_ = set()

  22. # print(reuser)
  23. while True:
  24.     #减少不必要访问
  25.     temp = reuser - rem_usr
  26.     # print(temp)
  27.     if temp == set(): break
  28.     for usr in temp:
  29.         temp_list = userinfo[usr]
  30.         temp_len = len(temp_list)
  31.         #过滤不满足条件的用户
  32.         if temp_len < limit: rem_usr.add(usr)
  33.         elif temp_len >= limit:
  34.             for count in range(limit):
  35.                 print(usr + '---' + temp_list[0])
  36.                 temp_list.pop(0)
  37.         #为0添加到剩余集合
  38.         elif temp_len == 0: rem_usr_.add(usr)

  39. temp = reuser - rem_usr_
  40. #输出不满足条件的
  41. if temp != set():
  42.     for usr in reuser - rem_usr_:
  43.         for u in userinfo[usr]:
  44.             print(usr + '---' + u)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-20 12:14

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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