题解 | #数据分类处理#
数据分类处理
https://www.nowcoder.com/practice/9a763ed59c7243bd8ab706b2da52b7fd
import sys from collections import OrderedDict Iline = sys.stdin.readline().split() numI, I = Iline[0], Iline[1:] Rline = sys.stdin.readline().split() numR, R = Rline[0], Rline[1:] R = map(str,sorted(map(int,set(R)))) dic = OrderedDict() for Ri in R: for j, num in enumerate(I): if Ri in num: if Ri not in dic: dic[Ri] = [[j, num]] elif Ri in dic: dic[Ri].append([j, num]) ans = '' count = 0 result = [] for key, value in dic.items(): ans += key ans += ' '+ str(len(dic[key])) result.append(key) result.append(len(dic[key])) count += 2 for item in dic[key]: ans += ' ' + str(item[0]) ans += ' ' + str(item[1]) count += 2 result.append(item[0]) result.append(item[1]) result = [count] + result print(' '.join(str(x) for x in result))
- 注意要先将R转变为set去重,用一次map将里面的元素转换为数字排序后,再转换为str来判断字符串的包含关系。
- 需要用OrderedDict,而不是dict, 这样能让字典按照R插入的顺序来排序。
- 注意输出处理,我先用字符串相加的方式,但显示输出格式错误(即使内容是对的),后来将元素添加到list中,最后用‘ ’连接起来才符合。