Cool_Breeze 发表于 2020-5-26 19:04:33

字典与集合应用

将此文本按照相同用户每次只输出3行数据(第一列为用户),不满足用户最后全部输出。
1005495524----a111111
1005495524----abc123
1005495524----aini1314
1005495524----iloveyou
1005495524----q1w2e3r4
1005495524----qq123123
1044122462aa----a111111
1044122462aa----abc123
1044122462aa----aini1314
1044122462aa----iloveyou
1044122462aa----q1w2e3r4
1044122462aa----qq123123
1095591332aa----a111111
1095591332aa----abc123
1095591332aa----aini1314
1095591332aa----iloveyou
1095591332aa----q1w2e3r4
1095591332aa----qq123123
1111qqqq1111----a111111
1111qqqq1111----abc123
1111qqqq1111----aini1314
1111qqqq1111----iloveyou
1111qqqq1111----q1w2e3r4
1111qqqq1111----qq123123
111qqq111----a111111
111qqq111----abc123
111qqq111----aini1314
111qqq111----iloveyou
111qqq111----q1w2e3r4
111qqq111----qq123123
结果:1044122462aa---a111111
1044122462aa---abc123
1044122462aa---aini1314
1005495524---a111111
1005495524---abc123
1005495524---aini1314
1111qqqq1111---a111111
1111qqqq1111---abc123
1111qqqq1111---aini1314
111qqq111---a111111
111qqq111---abc123
111qqq111---aini1314
1095591332aa---a111111
1095591332aa---abc123
1095591332aa---aini1314
1044122462aa---iloveyou
1044122462aa---q1w2e3r4
1044122462aa---qq123123
1005495524---iloveyou
1005495524---q1w2e3r4
1005495524---qq123123
1111qqqq1111---iloveyou
1111qqqq1111---q1w2e3r4
1111qqqq1111---qq123123
111qqq111---iloveyou
111qqq111---q1w2e3r4
111qqq111---qq123123
1095591332aa---iloveyou
1095591332aa---q1w2e3r4
1095591332aa---qq123123

请按任意键继续. . .


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

#用户名
userinfo = {}
with open('1.txt','r') as f:
    for each_line in f:
      temp = (each_line.split('----'))
      #去掉换行符
      if '\n' in temp: temp = temp[:-1]
      #用户名在字典中,追加数据
      if temp in userinfo:
            userinfo].append(temp)
      else:
            userinfo] = ]

#输出条件
limit = 3
#需要处理的用户
reuser = set(userinfo.keys())
rem_usr = set()
#不满足条件的用户
rem_usr_ = set()

# print(reuser)
while True:
    #减少不必要访问
    temp = reuser - rem_usr
    # print(temp)
    if temp == set(): break
    for usr in temp:
      temp_list = userinfo
      temp_len = len(temp_list)
      #过滤不满足条件的用户
      if temp_len < limit: rem_usr.add(usr)
      elif temp_len >= limit:
            for count in range(limit):
                print(usr + '---' + temp_list)
                temp_list.pop(0)
      #为0添加到剩余集合
      elif temp_len == 0: rem_usr_.add(usr)

temp = reuser - rem_usr_
#输出不满足条件的
if temp != set():
    for usr in reuser - rem_usr_:
      for u in userinfo:
            print(usr + '---' + u)
页: [1]
查看完整版本: 字典与集合应用