【问题标题】:Fastest way to transform dictionary/json keys to be MongoDB acceptable (convert "." and "$" to something else)将字典/json 键转换为 MongoDB 可接受的最快方法(将“.”和“$”转换为其他内容)
【发布时间】:2016-09-18 23:27:13
【问题描述】:

TLDR:替换包含“.”的所有键的最快方法是什么还是带有下划线的“$”?


对于使用 MongoDB 但您不能使用“.”的任何人来说,这并不奇怪。或“$”作为文档中的任何键。如果您首先是所有密钥的创建者,这很容易,因此可以明智地选择您的名字。就我而言,我是通过从外部 API 中提取数据来获取数据的,所以我无法对他们的约定做任何事情......

我意识到我可以像这样一一转换每个单独的键:

APIdict[key_num_1] = APIdict.pop(key.num.1)
APIdict[key_num_2] = APIdict.pop(key.num.2)
APIdict[key_num_3] = APIdict.pop(key.num.3)
...

但这假设我事先知道所有的键并且可能会变得凌乱/冗长。

有没有办法解析字典中的所有键并重命名所有包含“。”的键与使用下划线的对应键?

【问题讨论】:

    标签: python json mongodb python-2.7 dictionary


    【解决方案1】:

    可能不太理想,但我使用字典理解来在一行中创建一个新字典...

    假设“a”是您的“坏”字典。

    a_cleaned = {key.replace(".","_"): a[key] for key in a.keys()}

    感谢 Valentin Lorentz 的改进:

    a_cleaned = {key.replace(".","_"): value for (key, value) in a.items()}
    

    【讨论】:

    • 使用这个:a_cleaned = {key.replace(".","_"): value for (key, value) in a.items()}
    猜你喜欢
    • 1970-01-01
    • 2010-11-18
    • 2016-10-04
    • 2013-06-23
    • 1970-01-01
    • 2016-01-13
    • 2018-07-04
    相关资源
    最近更新 更多