📜  门| GATE-IT-2004 |问题25(1)

📅  最后修改于: 2023-12-03 15:42:19.546000             🧑  作者: Mango

门 | GATE-IT-2004 | 问题25

本题是GATE-IT-2004考试中的计算机科学领域的一道题目,要求编写一个程序。

题目描述

一份文件包含用分号分隔的条目。每个条目由两个字段组成:名称和值。将其读入并将其转换为一个由名称和值组成的一个键值对。然后对于输入文件中的每个条目,如果该名称出现超过一次,则打印出该名称和该名称的出现次数,否则不打印。

注意:输入文件是按顺序排列的,并且名称不一定是唯一的。

输入格式如下:

name1;value1
name2;value2
...
namen;valuen

其中,名称和值都是字符串,长度不超过100。

输出格式为:

name1: n
name2: m
...

其中,名称后面跟着该名称在输入文件中出现的次数,n、m为该名称出现的次数。

示例

假设输入文件如下:

name1;value1
name2;value2
name1;value3
name3;value4
name2;value5

则输出结果应该为:

name1: 2
name2: 2
解题思路

思路比较简单,可以采用哈希表来实现。具体步骤如下:

  1. 首先,读入输入文件,将每一行按照分号分隔,并将每个字段存储到哈希表中,键为名称,值为名称在文件中出现的次数。
  2. 读取完所有的输入后,遍历哈希表,对于名称在文件中出现次数大于1的,输出该名称和次数。

下面是对应的 Python 代码:

def count_items(file_path):
    name_count = {}
    with open(file_path) as f:
        for line in f:
            name, value = line.split(';')
            name_count[name] = name_count.get(name, 0) + 1

    for name, count in name_count.items():
        if count > 1:
            print(f"{name}: {count}")
总结

本题主要考察了哈希表的应用和简单的文件读写操作。在实现上需要注意,要使用字典来存储名称和出现次数的对应关系,而且要特别注意输入文件的格式(名称和值之间的分隔符等)。