![](/img/trans.png)
[英]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.