python中的通用或集中字典

时间:2013-05-15 11:19:39

标签: python

我正在寻找一种在python中使用通用或集中字典的方法。我有几个脚本可以处理相同的数据集,但做不同的事情。我在这些脚本(例如乐器名称)中使用了dictionarys,这些脚本在多个脚本中使用。如果我进行更改或添加值,我必须做出shure,我会在所有脚本中执行此操作,这当然是痛苦的,容易出错。

是否有可能,我有一本字典并在所有不同的脚本中使用它?

感谢任何帮助 - 谢谢。

3 个答案:

答案 0 :(得分:2)

如果您在谈论在同一进程中运行的多个脚本,或者需要共享相同数据的多个进程,我并不完全理解:

多个流程:

我认为,在多个脚本(不同进程)之间共享数据的最简单方法是使用简单的文件数据库。

SQLite3捆绑了Python,所以这将是一个不错的选择。

单个流程:

如果您只是想集中访问同时运行的多个方法(在同一个进程中),那么您可以在一个脚本中声明您的字典,让所有其他人访问该位置,而不重复结构。 您基本上在脚本中声明此dict,并将其导入其他所有。

答案 1 :(得分:1)

对于这种情况,我的项目根目录中有一个general_values.py文件。

由于列表和dictionaries都使用对存储值的引用,因此在不同脚本中使用相同的dictlist不会导致问题,因为它们都将使用相同的单个数据存储在记忆中。

Likwise:

main_values.py

    my_dict = {1:1}

some.py

    import main_values
    main_values.my_dict[2] = 2

other.py

    import main_values
    print  main_values.my_dict

    >> {1:1, 2:2}

答案 2 :(得分:1)

一些选项:

  • 您可以使用共享的搁置文件。请参阅http://docs.python.org/2/library/shelve.html
  • 您可以将配置信息存储在JSON / YAML或类似文件中
  • 对于您的用例可能有点过分,但像http://redis.io(或轻量级密钥存储区)数据库这样的内容将使您能够使用类似dict的接口来跨进程持久化密钥并可用于其他语言。