题解 | #数据分类处理#

数据分类处理

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))


  1. 注意要先将R转变为set去重,用一次map将里面的元素转换为数字排序后,再转换为str来判断字符串的包含关系。
  2. 需要用OrderedDict,而不是dict, 这样能让字典按照R插入的顺序来排序。
  3. 注意输出处理,我先用字符串相加的方式,但显示输出格式错误(即使内容是对的),后来将元素添加到list中,最后用‘ ’连接起来才符合。
#笔试题解#
全部评论

相关推荐

不愿透露姓名的神秘牛友
09-19 14:45
点赞 评论 收藏
分享
秋招投简历提醒助手:一开始还觉得是正常交流。直到一看薪资4-6😨
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务