簡體   English   中英

python:使用字典鍵的一部分作為字典值的變量

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM