## 任务描述:
### 本关任务:给定一个字符串,该字符串中包含了许多邮箱号,使用字符串函数筛选出这些邮箱号,并根据不同的电子邮件服务商来分类。
## 编程要求:
### 仔细阅读右侧编辑区内给出的代码框架及注释,按照提示在 Begin-End 之间编写程序代码。分类结果为一个列表,每个元素的格式如下:
### x:y1,y2...
### x 为邮箱号中@和.com之间的一截,y 为邮箱号,每个邮箱号用英文逗号隔开。请在合适的地方使用排序函数 sorted,使每次运行的结果都一样。
## 测试说明
**平台将使用测试集运行你编写的程序代码,若全部的运行结果正确,则通关。**
**可在右侧 “测试结果”区查看具体的测试集详情。**
**测试输入:**
**sasdlf@163.com,non2893@sina.com,29h_Hdskie@sina.com**
**预期输出:**
### **['163:sasdlf@163.com', 'sina:non2893@sina.com,29h_Hdskie@sina.com']**
代码答案:
```python
import copy
str1 = input()# 包含邮箱号的字符串,input()输入的都是字符串
Str =copy.deepcopy(str1) #复制一个
count=Str.count("@")#看看有多少个邮箱号码
list1=list(str1.split(','))#把邮箱号全部放入list1中作为邮箱的value列表
list2=[]#定义一个空列表,作为邮箱类名的key值列表
for i in range(0,count):#有几个邮箱切几次
a = Str.find("@")# 返回@的位置
b = Str.find(".")# 返回.的位置
if Str[a+1:b] not in list2:#去重操作,因为可能有好几个同类别的邮箱
list2.append(Str[a+1:b])#把邮箱类名放入list2中
Str=Str[b+4:]#把前面判断过的邮箱号码删除,接着判断知道判断结束为止
dic={}#定义一个空列表,将其键与值对应存入,注意这里一个键对应多个值,所以值的类型是列表,(题目要求已经给出)
for i in list2:
for j in list1:
if j.endswith(i+".com"):#如果值是以邮箱名+.com结尾
dic.setdefault(i,[]).append(j)#就加入到key对应的列表中
res=[]#返回结果列表
keys=[]#key值列表
values=[]#value值列表
for key,valu in dic.items():#遍历字典
keys.append(key)#将键加入到keys列表中
values.append(valu)#将值加入到values列表中,注意这里有一个列表嵌套,列表里面还有列表
for i in range(len(keys)):#有几个键就循环几次
str4=",".join(values[i])#去除了列表的方括号
res.append(keys[i]+':'+str4)#将格式化后的元素加入到返回结果列表里面
res.sort()#进行排序,要符合测试集给出的顺序
print(res)#输出答案
```