python - 如何避免在 Python 中对大量 dict 键字符串进行硬编码

标签 python string dictionary hard-coding

也许这是一个常见问题,但我是Python新手!

我正在开发一些处理 json 查询的库,并问自己是否有一些最佳实践来避免对大量 json 键进行硬编码,例如:


# just an example..
var1 = response.json()["ACRI"]["message"]["title"]
var2 = response.json()["ACRI"]["message"]["content"]
var3 = response.json()["ACRI"]["message"]["meta"]["timestamp"]

当我看到它时,它不喜欢我,我创建了一个带有如下常量的类:


class _const:
    class headers:
        X_Auth_Token = "X-Auth-Token"
        X_Username = 'X-Username'
        X_Password = 'X-Password'

    class params:
        ID = "DocumentID"
        Symbols = "Symbols"
        ACRICode = "ACRICode"rketSegmentID"
        entries = "entries"
        depth = "depth"
        date = "date"
        meta = "meta"
        timestamp = "timestamp"
        message = "message"
        # ...

这是一个好的做法吗?关于 python 编译器有什么我不明白的地方吗?

谢谢

编辑:我尤其面临性能和/或内存消耗最佳实践

最佳答案

性能应该是您最不关心的问题,可维护性更重要。对字符串使用符号名称的一个很好的理由是你不能那么容易地拼写它,参见

KEY_SYMBOLS = "Symbols"

foo[KEY_SYMOBLS]

对比

foo["Symobls"]

IDE 或 linter 甚至可以在运行代码之前找到前一个拼写错误并突出显示它,但后者不太可能。


就性能而言,性能最高的 Python 代码是在变量中存储字符串的代码。编译后,同一模块中同一字符串的不同用途将被合并以仅引用一个字符串常量:

>>> 'foo' is 'foo'
True

不过,切普纳的回答中提出的观点仍然存在:不必要时,您无需从根解析子词典。

关于python - 如何避免在 Python 中对大量 dict 键字符串进行硬编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55985878/

相关文章:

python - 如何使用PIL贴面膜?

python - 如何根据另一列查找时差

vb.net - 如何永久存储字符串?应用程序关闭后?

iphone - 如何从 UITextField 获取字符串?

c# - 如何在某些方法中传递 Dictionary<string, string> 对象

python - 上传到 Azure Blob 存储时自动设置内容类型

python - 将 .py 转换为 HTML

php - PHP 中的 Unicode (UTF8) 字符串字数统计

python - 为什么列表不保存元素?

python - 获取嵌套字典中所有键的列表