python 两个数组多次for循环实现和使用词典和sorted来实现

合并表记录

http://www.nowcoder.com/questionTerminal/de044e89123f4a7482bd2b214a685201

第一次做出来的答案,算法比较耗时。耗时2s。没通过。

方法1:比较差的做法。

while True:
    try:
        num = input()
        dict_index = []
        dict_value = []
        length = int(num)
        for i in range(int(num)):
            dict_str = input()
            dict_list = dict_str.split(' ')
            dict_index.append( int(dict_list[0]))
            dict_value.append(int(dict_list[1]))

        for i in range(int(num)-1):
            for j in range(i+1,int(length)):
                if dict_index[i] == dict_index[j]:
                    dict_value[i] = dict_value[i]+ dict_value[j]
                    for k in range(j,int(length)-1):
                        dict_value[k] = dict_value[k+1]
                        dict_index[k] = dict_index[k+1]
                    #pdb.set_trace()
                    length = length -1
                    break
        x_min = dict_index[0]
        for i in range(length-1):
            for j in range(i+1,length):
                if dict_index[i]>dict_index[j]:
                    temp =dict_index[i]
                    dict_index[i] = dict_index[j]
                    dict_index[j] = temp

                    temp = dict_value[i]
                    dict_value[i] = dict_value[j]
                    dict_value[j] = dict_value[i]
        for i in range(length):
            print(str(dict_index[i]) + ' ' + str(dict_value[i]))
    except:
        pass

方法2:使用map来生成词典。使用sorted来给字典排序

while True:
    try:
        n = int(input())
        dic = {}
        for i in range(n):
            x, y = map(int, input().split(' '))
            if x in dic:
                dic[x] = dic[x] + y
            else:
                dic[x] = y

        #方法1:
        dic = sorted(dic.items(), key = lambda item:item[0])  #dic.items()以列表形式返回dict
        for i in dic:
            #print(i[0], i[1])
            print('{} {}'.format(i[0], i[1]))
        #方法2:
        #d = sorted(dic)
        #for i in d:
            #print(i, dic[i])


    except:
        break
全部评论

相关推荐

来,说点可能被同行“骂”的大实话。🙊当初接数字马力Offer时,朋友都说:“蚂蚁的“内包”公司?你想清楚啊!”但入职快一年后的今天,我反而对他有了不一样的看法!🔹 是偏见?还是信息差!之前没入职之前外面都在说什么岗位低人一等这类。实际上:这种情况不可至否,不能保证每个团队都是其乐融融。但我在的部门以及我了解的周边同事都还是十分好相处的~和蚂蚁师兄师姐之间也经常开一些小玩笑。总之:身份是蚂蚁公司给的,地位是自己挣的(一个傲娇女孩的自述)。🔹 待遇?玩的就是真实!试用期工资全额发!六点下班跑得快(早9晚6或者早10晚7,动态打卡),公积金顶格交。别听那些画饼的,到手的钱和下班的时间才是真的(都是牛马何必难为牛马)。🔹 能不能学到技术?来了就“后悔”!我们拥有权限直通蚂蚁知识库,技术栈多到学不完。说“学不到东西”的人,来了可能后悔——后悔来晚了(哈哈哈哈,可以不学但是不能没有)!💥 内推地址:https://app.mokahr.com/su/ueoyhg❗我的内推码:NTA6Nvs走我的内推,可以直达业务部门,面试流程更快速,进度可查!今天新放HC,之前挂过也能再战!秋招已经正式开始啦~机会就摆在这,敢不敢来试一试呢?(和我一样,做个勇敢的女孩)
下午吃泡馍:数字马力的薪资一般哇,5年经验的java/测试就给人一万出头,而且刚入职第三天就让人出差,而且是出半年
帮你内推|数字马力 校招
点赞 评论 收藏
分享
评论
1
1
分享

创作者周榜

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