如何查找Python字典值在CSV中的匹配行并输出对应键与编号?
问题
我有如下格式的CSV文件:
1087,c6d537e112156be1afbb8a5a85221ff4d95e2461f83f03425549ff42dee7a278
同时我有一个Python字典:
{'danial': '277375b99e186c72ac38ac47b03199038342fe0389be8765476fa2be0c5b5649', 'elham': 'c6d537e112156be1afbb8a5a85221ff4d95e2461f83f03425549ff42dee7a278'}
需要实现:查找字典中的值在CSV文件中的匹配项,将CSV中匹配行的首列编号与字典的对应键关联输出,示例输出如下:
danial,1087 elham,1011
解决方案
可以分两步实现:先把CSV内容转换成哈希值:编号的映射字典,再遍历目标字典匹配输出。
代码实现
# 1. 读取CSV并构建哈希值到编号的映射 hash_to_id = {} with open('your_file.csv', 'r') as f: for line in f: line = line.strip() if not line: continue id_num, hash_val = line.split(',', 1) hash_to_id[hash_val] = id_num # 2. 遍历目标字典,匹配并输出 target_dict = {'danial': '277375b99e186c72ac38ac47b03199038342fe0389be8765476fa2be0c5b5649', 'elham': 'c6d537e112156be1afbb8a5a85221ff4d95e2461f83f03425549ff42dee7a278'} for name, hash_val in target_dict.items(): # 用get方法避免找不到匹配时报错,可自定义默认值 matched_id = hash_to_id.get(hash_val, '无匹配') print(f"{name},{matched_id}")
说明
- 读取CSV时用
split(',', 1),确保即使哈希值意外包含逗号也不会拆分错误(你的案例中哈希值不含逗号,但写法更健壮); - 用
get方法处理无匹配的情况,避免抛出KeyError; - 运行前记得把
'your_file.csv'替换成实际的CSV文件名。
内容的提问来源于stack exchange,提问作者Ehsan Abedi
相关产品推荐
相关产品推荐

