Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.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 dict_Python_File_Dictionary - Fatal编程技术网

从文本将键和值读入python dict

从文本将键和值读入python dict,python,file,dictionary,Python,File,Dictionary,我有一个这种格式的文本文件 the 0.418 0.24968 -0.41242 0.1217 0.34527 -0.044457 -0.49688 -0.17862 -0.00066023 -0.6566 0.27843 -0.14767 -0.55677 0.14658 -0.0095095 0.011658 and 0.26818 0.14346 -0.27877 0.016257 0.11384 0.69923 -0.51332 -0.47368 -0.33075 -0.13834 0.

我有一个这种格式的文本文件

the 0.418 0.24968 -0.41242 0.1217 0.34527 -0.044457 -0.49688 -0.17862 -0.00066023 -0.6566 0.27843 -0.14767 -0.55677 0.14658 -0.0095095 0.011658
and 0.26818 0.14346 -0.27877 0.016257 0.11384 0.69923 -0.51332 -0.47368 -0.33075 -0.13834 0.2702 0.30938 -0.45012 -0.4127 -0.09932 0.038085 
我想把它读入一个python dict变量,这样我就

{'the': [0.418, 0.24968,..], 'and': [0.26818 0.14346,..]}

我不知道如何开始

您可以逐行遍历文件。然后在空白处使用
split
,使用索引
[0]
作为键,然后使用列表理解将剩余值转换为
float
列表

with open(text_file) as f:
    d = dict()
    for line in f:
        data = line.split()
        d[data[0]] = [float(i) for i in data[1:]]
    print(d)
输出

{'and': [0.26818, 0.14346, -0.27877, 0.016257, 0.11384, 0.69923, -0.51332, -0.47368, -0.33075, -0.13834, 0.2702, 0.30938, -0.45012, -0.4127, -0.09932, 0.038085],
 'the': [0.418, 0.24968, -0.41242, 0.1217, 0.34527, -0.044457, -0.49688, -0.17862, -0.00066023, -0.6566, 0.27843, -0.14767, -0.55677, 0.14658, -0.0095095, 0.011658]}

以下是一个有效的解决方案:

my_dict = {}
with open('your_file_name') as f:
    for line in f:
        elements = line.split()
        my_dict[elements[0]] = [float(e) for e in elements[1:]]
请注意,@CoryKramer建议的解决方案使用
readlines
,它返回一个列表而不是迭代器。因此,我不建议对大文件使用他的解决方案(这将不必要地占用太多内存)。

这是一个开始吗

import json

variable_one = "the 0.418 0.24968 -0.41242 0.1217 0.34527 -0.044457 -0.49688 -0.17862 -0.00066023 -0.6566 0.27843 -0.14767 -0.55677 0.14658 -0.0095095 0.011658"

variable_one = variable_one.split()
json_variable_one = []
json_variable_one = variable_one[0], variable_one[1:]

print(json.dumps(json_variable_one))
输出:

[“the”、[“0.418”、“0.24968”、“-0.41242”、“0.1217”、“0.34527”、“-0.044457”、“-0.49688”、“-0.17862”、“-0.00066023”、“-0.6566”、“0.27843”、“-0.14767”、“-0.55677”、“0.146558”、“-0.0095095”、“0.011658”]