[英]Python 3.6 - Can a variable value be used as part of a key value in a Dict?
[英]python: Use part of dict key as variable for dict value
我有这样的字典:
mapper = {
"bigint(20)": "= Column(BigInteger)",
"int(11)": "= Column(Integer)",
"`": "",
"varchar(255)": "= Column(String)",
}
我将命名为sqlalchemy的sql数据类型映射为要替换为文本文件。 到目前为止,我只是将int映射为整数,将varchar映射为字符串,依此类推。 但是,我的想法是使用键的一部分作为变量传递给它的相对值,即避免硬编码varchar(255)
并使用varchar(x)
传递给它的相对值= Column(String())
具有= Column(String(x))
。
就像是:
"varchar(x)": "= Column(String{})".format(x),
您对实现该目标有什么建议吗? 谢谢
dict
是一组固定的具体密钥。 你不能仅凭dict
就做自己想做的事。
但是,您可以对dict
进行子类化以提供__getitem__
的定义,该定义可以执行您想要的操作。 就像是
import re
class SQLDict(dict):
def __getitem__(self, key):
m = re.match('^varchar\((.*)\)$', key)
if m:
return super(SQLDict, self).__getitem__('varchar(x)') % (m.group(1),)
else:
return super(SQLDIct,self).__getitem__(key)
mapper = SQLDict({
"bigint(20)": "= Column(BigInteger)",
"int(11)": "= Column(Integer)",
"`": "",
"varchar(x)": "= Column(String(%s))",
})
尝试一下...
>>> print mapper['varchar(15)']
'=Column(String(215))'
这并不完美; 我已经将varchar(x)
硬编码到__getitem__
的定义中,而您可能会定义mapper
以使用像varchar(y)
这样的键。 但这应该可以帮助您入门。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.