【牛客网华为机试】HJ8 合并表记录

题目

描述

数据表记录包含表索引和数值(int范围的正整数),请对表索引相同的记录进行合并,即将相同索引的数值进行求和运算,输出按照key值升序进行输出。

输入描述:

先输入键值对的个数

然后输入成对的index和value值,以空格隔开

输出描述:

输出合并后的键值对(多行)

示例1

输入:

4

0 1

0 2

1 2

3 4

输出:

0 3

1 2

3 4

解题思路

(1)记录输入的key, value个数,赋值给num

(2)新建空字典data_dict

(3)循环num次,用split分割输入的带空格的字符串,并赋值给临时变量key和value

(4)判断key是否已在data_dict中,在的话两个value求和,不在的话赋值value

(5)通过sorted函数对data_dict进行排序,key = lambda x:int(x[0])控制排序key

(6)逐步输出排序后的key和value

扩展:

(1)加入参数reverse可以进行倒排

(2)int函数用于将字符串转换成整数,否则排序会按照字符串排

>>>"3 4".split()

['3', '4']

>>>data_dict = {"1": 2, "3": 4}

>>>"1" in data_dict

True

>>>"5" in data_dict:

False

>>>"1" in data_dict.keys()

True

>>>sorted(data_dict.items(), key = lambda x:int(x[0]))

[('1', 2), ('3', 4)]

>>>sorted(data_dict.items(), key = lambda x:int(x[0]), reverse = True)

[('3', 4), ('1', 2)]

>>>data_dict = {"1": 2, "3": 4, "11": 4}

>>>sorted(data_dict.items(), key = lambda x:x[0])

[('1', 2), ('11', 4), ('3', 4)]

代码

while True:

    try:

        num = int(input())

        data_dict = {}

        for i in range(num):

            key, value = input().split()

            if key in data_dict:

                data_dict[key] = data_dict[key] + int(value)

            else:

                data_dict[key] = int(value)

        data = sorted(data_dict.items(), key = lambda x:int(x[0]))

        for (key,value) in data:

            print(str(key)+" "+str(value))

    except Exception as e:

        break


©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 之前一直没有实践评分卡模型,今天从网上看到有相关的代码,先保存下,后续需要再细看。 https://blog.cs...
    丙吉阅读 5,045评论 0 0
  • 用于python面试整理,主要来源于http://www.cnblogs.com/skiler/p/6952707...
    医学工程与科学园地阅读 6,988评论 0 13
  • pyspark.sql模块 模块上下文 Spark SQL和DataFrames的重要类: pyspark.sql...
    mpro阅读 13,198评论 0 13
  • Remove time complexity: remove from a set is O(1), remove...
    云端漫步_b5aa阅读 3,899评论 0 0
  • Python学习笔记 1.起步 输入:# 单个输入b=input()# input()接受的是string类型,需...
    NSQAQ阅读 3,430评论 0 0

友情链接更多精彩内容