这里有两个词典
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
答案 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']