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

172 篇文章 4 订阅
148 篇文章 3 订阅

读取 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)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值