2014-12-03 59 views
0

我正在尝试学习Python语言,并尝试与某人合作以更好地理解它。使用地图返回特定的地图

现在,下面这段代码是我的合作伙伴写的东西,但是当我在PyCharm中加载项目时,它强调红色的代码,输出也没有显示它应该做什么。

所以我有这样一段代码:

class account_fiscal_position(osv.osv): 
_name = 'account.fiscal.position' 
_inherit = 'account.fiscal.position' 

MAP_BTW_REGIME_KLANT_TOPACCOUNT = [(1, 'L3'), 
            (2, 'C'), 
            (3, 'I'), 
            (4, 'E')] 

def map_for_topaccount_customer_export(self, id, context=None): 
    return "L3" if not id else MAP_BTW_REGIME_KLANT_TOPACCOUNT[id] 

它应该返回L3如果没有任何标识,以示对,下面是一块红色下划线似乎并没有工作在我的控制台:

MAP_BTW_REGIME_KLANT_TOPACCOUNT [ID]

任何想法,为什么?非常感谢并且对于noobish问题感到抱歉

+0

不应该'MAP_BTW_REGIME_KLANT_TOPACCOUNT '是'dict',而不是'two-'tuple'的列表?注意:如果它*是一个字典,你的函数就变得简单得多了,返回MAP_BTW_REGIME_KLANT_TOPACCOUNT.get(id,“L3”)'。 – jonrsharpe 2014-12-03 11:55:01

回答

2

您在此处定义的内容为MAP_BTW_REGIME_KLANT_TOPACCOUNT是对的列表,而不是“地图”。

您可以通过将dict()周围使其成为dict

MAP_BTW_REGIME_KLANT_TOPACCOUNT = dict([(1, 'L3'), (2, 'C'), (3, 'I'), (4, 'E')]) 

或(如@jonrsharpe指出的),它可以更简单地通过直接定义字典来完成:

MAP_BTW_REGIME_KLANT_TOPACCOUNT = {1: 'L3', 2: 'C', 3: 'I', 4: 'E'} 
+2

这是一个很多的括号,一个适当的字典文字会更整洁。 – jonrsharpe 2014-12-03 11:56:24

1

MAP_BTW_REGIME_KLANT_TOPACCOUNT不是地图,它是一个关联列表。为了使之成为一个地图,你可以将它定义为

MAP_BTW_REGIME_KLANT_TOPACCOUNT = dict([ 
    (1, 'L3'), 
    (2, 'C'), 
    (3, 'I'), 
    (4, 'E') 
]) 

但是当你在它,你也可以同样把它变成一个直接映射:

MAP_BTW_REGIME_KLANT_TOPACCOUNT = { 
    1: 'L3', 
    2: 'C', 
    3: 'I', 
    4: 'E' 
}