You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python读取两个文件生成字典并对比键的实现疑问

实现思路与代码示例

前置假设

默认你的两个txt文件每行存储一组键值对,用空格分隔,示例内容如下:

math 8
chinese 9
english 7
如果你的文件用其他分隔符(比如等号、逗号),修改代码中split的参数即可。

实现步骤

  • 分别读取两个文件的内容,按分隔符拆分每行的键和值,值转成整数类型后存入对应字典
  • 利用字典keys()的集合特性,直接取交集得到两个字典的重复键,无需嵌套循环比对
  • 遍历重复键,取出两个字典中对应的值做判断,符合>=8的条件就打印对应内容

完整代码

# 读取file1.txt生成字典
dict1 = {}
with open('file1.txt', 'r', encoding='utf-8') as f:
    for line in f:
        line = line.strip()
        # 跳过空行
        if not line:
            continue
        key, val = line.split()
        dict1[key] = int(val)

# 读取file2.txt生成字典
dict2 = {}
with open('file2.txt', 'r', encoding='utf-8') as f:
    for line in f:
        line = line.strip()
        if not line:
            continue
        key, val = line.split()
        dict2[key] = int(val)

# 取两个字典的共同键(重复键)
common_keys = dict1.keys() & dict2.keys()

if not common_keys:
    print("两个文件不存在重复的键")
else:
    print(f"共找到{len(common_keys)}个重复键:{list(common_keys)}")
    # 检查重复键的取值
    for k in common_keys:
        v1 = dict1[k]
        v2 = dict2[k]
        # 可根据需求修改判断条件,比如只要任意一个值>=8就打印,改成v1 >=8 or v2 >=8即可
        if v1 >= 8 and v2 >= 8:
            print(f"重复键[{k}]符合要求:file1值为{v1},file2值为{v2}")

入门注意事项

  • 用with open语法读取文件会自动管理文件资源,不需要手动调用close()方法,更稳妥
  • 从文件读取的内容默认是字符串类型,必须把值转成int才能做数值大小比较,否则会出现字符串比对的逻辑错误
  • 用集合交集找共同键是Python特有的高效写法,比嵌套循环遍历两个字典比对键的写法简洁很多,也不容易出bug

内容的提问来源于stack exchange,提问作者absolutkaffe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 17:48:08