Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/358.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何从文件创建字典?_Python_Dictionary_Python 2.7 - Fatal编程技术网

Python 如何从文件创建字典?

Python 如何从文件创建字典?,python,dictionary,python-2.7,Python,Dictionary,Python 2.7,我想用文件中的值创建一个字典 问题是,它必须逐行读取才能添加到词典中,因为我认为我没有足够的内存加载要添加到词典中的所有信息 键可以是默认值,但值将是从文件中的每一行中选择的值。该文件不是csv,但我总是分割行,以便能够从中选择值 import sys def prod_check(dirname): dict1 = {} k = 0 with open('select_sha_sub_hashes.out') as inf: for line in

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

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

键可以是默认值,但值将是从文件中的每一行中选择的值。该文件不是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)

这是我正在使用的代码,我设置为value的变量是从文件中提取数据的行中的索引。当我试图调用字典来打印值时,我似乎遇到了一个问题,但我认为这可能是我的语法问题,也可能是我做的作业。我希望将值添加到键中,但键保持为常规数字,如0-100,因此听起来主要问题似乎是逐行读取文件。要逐行读取文件,可以执行以下操作:

with open('data.txt') as inf:
   for line in inf:
       # do your rest of processing
一起使用的优点是,当您完成或出现异常时,文件会自动关闭

--


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

因此听起来主要问题似乎是逐行读取文件。要逐行读取文件,可以执行以下操作:

with open('data.txt') as inf:
   for line in inf:
       # do your rest of processing
一起使用的优点是,当您完成或出现异常时,文件会自动关闭

--


请注意,原始帖子没有包含任何代码,现在它似乎包含了此代码的副本以帮助进一步解释问题。

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

或者,考虑:
…这将使您能够非常透明地在序列化和非序列化表示之间进行转换。

如果您没有足够的内存一次性将整个字典存储在RAM中,请尝试使用任意DBM、bsddb和/或gdbm。这些是类似于字典的对象,它们将磁盘上的键值对保存在一个表keystring valuestring数据库中

或者,考虑:
…这将允许您以非常透明的方式在序列化和非序列化表示之间进行透明转换。

看看类似于“Tokyo Cabinet”的东西,它具有Python绑定,效率相当高。也有京都内阁,但这方面的许可有点限制


还可以查看前面的S/O帖子:

看看类似于“Tokyo Cabinet”的东西,它有Python绑定,效率相当高。也有京都内阁,但这方面的许可有点限制


还可以查看之前的S/O帖子:

还有一件事,当向字典添加值和键时,我如何保持值保持默认值,或从0到无穷大?还有一件事,当向字典添加值和键时,我如何保持值保持默认值,或从0到无穷大?