反转选课名单
给出 n 行,每行写着一名学生所选的课程。
不用循环,而用集合推导式和字典推导式构造并输出以下内容。
第一行是 n,接下来 n 行形如 "名字 课程 课程 ..."。
有的行没有任何课程。
同一名学生可能出现在多行中,该学生的课程是这些行合并起来的结果。
同一行中重复出现的课程只算一次。
1) 输出不同学生的人数 S,接着按名字顺序输出 S 行 "名字 k 课程1 ...
课程k"。
k 是该学生所选不同课程的数目,课程排序后写出。
没有课程时为 "名字 0"。
2) 输出不同课程的个数 C,接着按课程顺序输出 C 行 "课程 m 名字1 ...
名字m"。
m 是选这门课的学生人数,名字排序后写出。
3) 把只有一名学生的课程排序后,在一行中用空格分隔输出。
若没有这样的课程,输出 -。
所有排序都按字符串的编码顺序(Python 字符串比较)进行。
- 输入
- 1 ≤ n ≤ 1000。
名字为 1 到 8 个小写英文字母。
课程为 2 到 6 个大写英文字母和数字,每行 0 到 10 个,不同课程不超过 200 个。 - 输出
- 1) S + 1 行,2) C + 1 行,3) 一行
4 kim ART MATH lee MATH kim BIO kim
2 kim 3 ART BIO MATH lee 1 MATH 3 ART 1 kim BIO 1 kim MATH 2 kim lee ART BIO
3 mia CS CS joy CS ART ART zoe
3 joy 2 ART CS mia 1 CS zoe 0 2 ART 1 joy CS 2 joy mia ART