按变量访问字典值

时间:2014-08-09 12:31:07

标签: python dictionary

这里有两个词典

all_info = {'brazil':{'prduct_prices':{"iphone":100, "ipod":65},
                      'product_stock':{"iphone":100, "ipod":100},
                      'validations' :{"passport":"^B[0-9]{3}[A-Z]{2}[A-Z|0-9]{7}$"}},
            'argentina':{'prduct_prices':{"iphone":100, "ipod":65},
                      'product_stock':{"iphone":100, "ipod":100},
                      'validations' :{"passport":"^A[A-Z]{2}[A-Z|0-9]{9}$"}}}

order = order = {'country': 'brazil', 'ipod': '30'}

这是导致问题的代码行

country = self.order['country']
if re.match(all_info[[country]['validations']['passport']],self.order[key]):
                    print 'Here i came'

现在的东西是PHP,如果我在{}中包含国家/地区,就像[{country}]它会有效。 但是在python我不能似乎以任何方式获得相同的工作流程,很明显我想要的东西..任何人都可以建议如何让[关键]充满动态值

我得到的错误是:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: string indices must be integers, not str

2 个答案:

答案 0 :(得分:3)

应该是

all_info[country]['validations']['passport']

原始代码为all_info[expr],其中expr为[country]['validations']['passport']并且有效地执行此操作:

lst = [country]       # create list
lst['validations']    # error here; not using an integer indice for a list

答案 1 :(得分:0)

现在正在发生的事情是,Python将country解释为列表并尝试检索索引和验证&#39;和护照&#39;从它(它不是因为它们是字符串而不是整数)。将其更改为:

all_info[country]['validations']['passport']