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
全部评论

相关推荐

01-29 16:08
已编辑
华南农业大学 Java
点赞 评论 收藏
分享
KPLACE:首先是板面看起来不够,有很多奖,比我厉害。项目要精减,大概详细描述两到三个,要把技术栈写清楚,分点,什么算法,什么外设,怎么优化,不要写一大堆,分点,你写上去的目的,一是让别人知道你做了这个知识点,然后在面试官技术面的时侯,他知道你会这个,那么就会跟你深挖这个,然后就是个人评价改为专业技能
点赞 评论 收藏
分享
评论
1
1
分享

创作者周榜

更多
牛客网
牛客企业服务