如何在Python中检索字典值?

如何在Python中检索字典值?,python,dictionary,definitions,Python,Dictionary,Definitions,我有一个Python方法字典,它位于定义中。此def在类外使用对象调用。无论何时调用def,都会返回字典中最后一项的结果。在这种情况下,将返回def spc\u summary:的结果 def setStyles(self): # Assign function to file functions = { 'app_server.php':self.app_server(), 'dcrm2nlyte.php':self.dcrm2

我有一个Python方法字典,它位于定义中。此
def
在类外使用对象调用。无论何时调用
def
,都会返回字典中最后一项的结果。在这种情况下,将返回
def spc\u summary:
的结果

 def setStyles(self):
    # Assign function to file
    functions = {
            'app_server.php':self.app_server(),
            'dcrm2nlyte.php':self.dcrm2nlyte(),
            'export.php':self.export(),
            'host_server.php':self.host_server(),
            'spc.php':self.spc(),
            'spc_approved.php':self.spc_approved(),
            'spc_approved_by_dc.php':self.spc_approved_by_dc(),
            'spc_by_dc.php':self.spc_by_dc(),
            'spc_complete.php':self.spc_complete(),
            'spc_summary.php':self.spc_summary()
    }

    filename = self.phpfile
    functions.get(filename)
有人能解释一下这里发生了什么吗?如果需要更多细节,请告诉我。谢谢

让我补充一些细节:
functions.get(filename)
正在无规则地检索最后一个字典项,而不是文件名。我已经完成了=>
函数('spc.php')
并且它仍然返回了“def spc\u summary”的结果。这些def不应该有相同的结果

您的函数dict似乎做了错误的事情。定义dict时,将键映射到函数结果,而不是函数对象。如果将其映射到函数对象,则在调用
functions.get(filename)(

你的口述可能如下:

functions = {
        'app_server.php':self.app_server,
        'dcrm2nlyte.php':self.dcrm2nlyte,
        'export.php':self.export,
        'host_server.php':self.host_server,
        'spc.php':self.spc,
        'spc_approved.php':self.spc_approved,
        'spc_approved_by_dc.php':self.spc_approved_by_dc,
        'spc_by_dc.php':self.spc_by_dc,
        'spc_complete.php':self.spc_complete,
        'spc_summary.php':self.spc_summary
}

字典是无序的,因此迭代dict返回的最后一个对象可能不是插入该dict的最后一项


functions.get(filename)
将获取
filename
的当前值,并在
functions
中查找它
filename
self.phpfile
获取其值,因此在您的示例中,
self.phpfile
必须设置为“spc\u summary.php”。

函数字典的用途是什么?您正在尝试调用一个名称存储在
phpfile
中的函数吗?
'spc\u summary.php':self.spc\u summary()
行应该没有像
'spc\u summary.php':self.spc\u summary
和at
functions.get(filename)
这样的参数。您应该使用
functions.get(filename)(
是的,在每次方法调用构造字典时,您都在有效地调用所有这些成员函数。@Dan D.谢谢!你的解决方案解决了我的问题。