读取两个文件,并求其交集,输出交集量比较大的(百度语音算法一面、二面)

读取 txt 文件,求交集并输出最大的

示例:

file1.txt

a
b

file2.txt

a
b
c

读出两个文件,得到

list1 = ['a', 'b']
list2 = ['a', 'b', 'c']

最终输出

{'a': 2}

2. 解题思路 & 代码

def inter(list1, list2):
    dict1 = {
   }
    for item in list1:
        if item not in dict1:
            dict1[item] = 1
        else:
            dict1[item] += 1

    dict2 = {
   }
    for item in list2:
        if item not in dict2:
            dict2[item] = 1
        else:
            dict2[item] += 1
    dict3 = {
   }
    for key in dict1.keys():
        if key in dict2:
            dict3[key] = max(dict1[key], dict2[key])

    return dict3

if __name__ == '__main__':
    list1 = []
    list2 = []
    with open('file_1.txt','r') as f:
        for line in f.readlines():
            data = line.strip('\n')
            list1.append(data)
    with open('file_2.txt','r') as f:
        for line in f.readlines():
            data = line.strip('\n')
            list2.append(data)

    print(list1,list2)
    res = inter(list1, list2)
    print(res)

===========================================================

读取 txt 文件,求交集并写入新的 txt


def inner(list1, list2):
    dict1 = {
   }
    dict2 = {
   }
    dict3 = {
   }
    for item in list1:
        if item not in dict1:
            dict1[item] = 1
        else:
            dict1[item] += 1
    for item in list2:
        if item not in dict2:
            dict2[item] = 1
        else:
            dict2[item] += 1
    for key in dict1.keys():
        if key in dict2:
            dict3[key] = min(dict1[key], dict2[key])
    list_ = []
    for key in dict3.keys():
        for i in range(dict3[key]):
            list_.append(key)
    return list_


if __name__ == '__main__':
    list1 = []
    list2 = []
    with open('file_1.txt', 'r') as f:
        for line in f.readlines():
            data = line.strip('\n')
            list1.append(data)
    with open('file_2.txt', 'r') as f:
        for line in f.readlines():
            data = line.strip('\n')
            list2.append(data)
    print(list1, list2)
    res = inner(list1, list2)
    print("ans:", res)
    with open('./file_3.txt', 'a') as f:
        for s in res:
            f.write('\n' + s)


全部评论

相关推荐

鬼迹人途:你去投一投尚游游戏,服务器一面,第一个图算法,做完了给你一个策略题,你给出方案他就提出低概率问题,答不上当场给你挂
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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