Skip to main content
 首页 » 编程设计

python之在 Python 的 for 循环中使用 dict.get() 方法时如何传递变量

2025年05月04日11xing901022

我是 Python 的新手,正在完成一项小任务。在 Python 的 dict.get() 方法中传递变量时出现问题。

这是我正在使用的代码示例:

inputFile = open("Result_table_file.txt") 
 
outputFile = open("Result.txt","w") 
 
file =  open("matadata.txt") 
 
from collections import defaultdict 
d =  defaultdict(dict) 
 
for line in file: 
    name,values = line.split(':',1) 
    d[name] = values 
 
for record in inputFile: 
    recordSplit = record.split(",") 
    filename = recordSplit[3] 
    metadataValue = d.get(filename) 
    print "FileName :" + filename 
    print metadataValue 
    print "Record : " + record 

输出是:

FileName : Image01.tif 
Metadata : None 
Record : 100,134423.0,13911111,Image01 

这段代码工作正常。唯一的问题是当我将 filename 变量传递给 metadataValue = d.get(filename) 方法时,它给我的结果是 None。

任何人都可以告诉我可能是什么问题以及我该如何解决它。

还有一件事我已经确定,当我手动创建文件名变量而不是从文件中获取值时。它工作正常。

例如:

文件名 = "Image01" d.get(文件名)

我获得了正确的输出,而如果我在读取文件时获得了值(value),那么这个东西就不起作用了。

例如

记录在输入文件中: recordSplit = record.split(",") 文件名 = recordSplit[3] 元数据值 = d.get(文件名) 打印“文件名:”+文件名 打印元数据值 打印“记录:”+记录

有什么想法吗?

请您参考如下方法:

如果 d[filename] 不存在,则 get 将返回 None。

如果 d[filename] 不存在,添加第二个参数作为默认值返回:

In [2]: d = {'a':1, 'b':2} 
 
In [7]: print d.get('a') 
1 
 
In [8]: print d.get('c') 
None 
 
In [9]: print d.get('c', 77) 
77