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
相关产品推荐
相关产品推荐

