鱼C论坛

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

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

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

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

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

x
将此文本按照相同用户每次只输出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[1]: temp[1] = temp[1][:-1]
        #用户名在字典中,追加数据
        if temp[0] in userinfo:
            userinfo[temp[0]].append(temp[1])
        else:
            userinfo[temp[0]] = [temp[1]]

#输出条件
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[usr]
        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[0])
                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[usr]:
            print(usr + '---' + u)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-21 01:55

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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