【问题标题】:How to create a dictionary from file?如何从文件创建字典?
【发布时间】:2012-07-16 14:03:56
【问题描述】:

我想用文件中的值创建一个字典。

问题是它必须逐行读取才能添加到字典中,因为我认为我没有足够的内存来加载要附加到字典的所有信息。

键可以是默认值,但值将从文件中的每一行中选择一个。该文件不是 csv,但我总是拆分行,以便从中选择一个值。

 import sys

 def prod_check(dirname):
    dict1 = {}
    k = 0
    with open('select_sha_sub_hashes.out') as inf:
       for line in inf:
        pline = line.split('|')
        value = pline[3]
        dict1[line] = dict1[k]
        k += 1
        print dict1

 if __name__ =="__main__":
    dirname=sys.argv[1]
    prod_check(dirname)

这是我正在使用的代码,我设置为值的变量是我从中提取数据的文件中的行中的索引。当我尝试调用字典来打印值时,我似乎遇到了问题,但我认为这可能是我的语法问题或者我所做的分配。我希望将值添加到键中,但键保持为常规数字,例如 0-100

【问题讨论】:

    标签: python dictionary python-2.7


    【解决方案1】:

    如果您没有足够的内存一次将整个字典存储在 RAM 中,请尝试使用 anydbm、bsddb 和/或 gdbm。这些是类似字典的对象,将键值对保存在磁盘上的单表键字符串值字符串数据库中。

    (可选)考虑: http://stromberg.dnsalias.org/~strombrg/cachedb.html ...这将允许您非常透明地在序列化和非序列化表示之间进行透明转换。

    【讨论】:

      【解决方案2】:

      看看像“东京内阁”@http://fallabs.com/tokyocabinet/ 这样的东西,它具有 Python 绑定并且相当高效。还有京都内阁,但许可有点限制。

      还可以查看之前的 S/O 帖子:Reliable and efficient key--value database for Linux?

      【讨论】:

        【解决方案3】:

        所以听起来主要问题是逐行读取文件。要逐行读取文件,您可以这样做:

        with open('data.txt') as inf:
           for line in inf:
               # do your rest of processing
        

        使用with 的好处是,当您完成或发生异常时,文件会自动为您关闭。

        --

        注意,原来的帖子没有包含任何代码,现在似乎已经合并了该代码的副本以帮助进一步解释问题。

        【讨论】:

        • 还有一件事,当向字典添加值和键时,我如何保持这些值保持默认值,或者从 0 到无穷大?
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-09-03
        • 2013-12-06
        • 1970-01-01
        • 2011-10-08
        • 2012-12-15
        • 2018-03-29
        • 2021-07-21
        相关资源
        最近更新 更多