Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.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 3.x 如何从逗号分隔的值创建字典?_Python 3.x - Fatal编程技术网

Python 3.x 如何从逗号分隔的值创建字典?

Python 3.x 如何从逗号分隔的值创建字典?,python-3.x,Python 3.x,我需要从包含逗号分隔值的文本文件创建字典。到目前为止,我写了这么多。 import csv pick = open('a.txt','r') read = csv.reader(pick) reviews = {} 文本文件中的示例数据如下所示 Peter,Gravity,4.5,For a Few Dollars More,1.0,Prometheus,4.0 Jack Holmes,Lawrence of Arabia,3.0,Gravity,3.5,The Godfather,1.5,P

我需要从包含逗号分隔值的文本文件创建字典。
到目前为止,我写了这么多。

import csv
pick = open('a.txt','r')
read = csv.reader(pick)
reviews = {}
文本文件中的示例数据如下所示

Peter,Gravity,4.5,For a Few Dollars More,1.0,Prometheus,4.0
Jack Holmes,Lawrence of Arabia,3.0,Gravity,3.5,The Godfather,1.5,Prometheus,5.0,The Guns of Navarone,3.0
我想创建一个如下所示的词典

{'Peter': {'Gravity': 4.5,
          'For a Few Dollars More': 1.0,
          'Prometheus': 4.0},

'Jack Holmes': {'Lawrence of Arabia': 3.0,
                'Gravity': 3.5,
                'The Godfather': 1.5,
                'Prometheus': 5.0,
                'The Guns of Navarone': 3.0,}
}
我看了以下几页: 但这无助于回答我的问题。

您能给我一些关于如何实现这一点的提示或想法吗?

此解决方案使用
zip
将内部字典的键和值配对

d = {}

with open('a.txt') as f:
    for line in csv.reader(f):
        it = iter(line)
        key = next(it)
        d[key] = dict(zip(it, it))
如果需要
float
值,可以执行以下操作

d[key] = dict((a, float(b)) for a, b in zip(it, it))

此解决方案使用
zip
将内部字典的键和值配对

d = {}

with open('a.txt') as f:
    for line in csv.reader(f):
        it = iter(line)
        key = next(it)
        d[key] = dict(zip(it, it))
如果需要
float
值,可以执行以下操作

d[key] = dict((a, float(b)) for a, b in zip(it, it))

下面是一个不是很好但很简单的解决方案:

import csv

mydict = {}
with open('file.csv', mode='r') as infile:
    reader = csv.reader(infile)
    mylist = list(reader)
    for i in range(len(mylist)):
        z = iter(mylist[i][1:])
        mydict[mylist[i][0]] = dict(zip(z, z))

print(mydict)

下面是一个不是很好但很简单的解决方案:

import csv

mydict = {}
with open('file.csv', mode='r') as infile:
    reader = csv.reader(infile)
    mylist = list(reader)
    for i in range(len(mylist)):
        z = iter(mylist[i][1:])
        mydict[mylist[i][0]] = dict(zip(z, z))

print(mydict)


每行的末尾都会有吗?@SubbuVidyaSekar,
是一个打字错误。不,在每一行的末尾不会有一个
。在每一行的末尾,有没有可能按enter键或连续行?@SubbuVidyaSekar,连续行。因为必须读取文件,所以需要按键。
会在每行的末尾吗?@SubbuVidyaSekar,
是一个打字错误。不,在每一行的末尾不会有一个
。在每一行的末尾,有没有可能按enter键或连续行?@SubbuVidyaSekar,连续行。由于必须读取文件,因此需要按键。更改为key=next(它)是typo@Patrick哈,你的解决方案奏效了。这就是我想要的。非常感谢。顺便说一句,请编辑部件键=下一步(it)。@007mrviper:验证您的结果。还有一些工作要做。整个列表都将作为该项目的价值key@SubbuVidyaSekar我已经做到了。这就是我接受他的答案的原因。{'Peter':{'Gravity':'4.5','多花几美元':'1.0','Prometheus':'4.0','Jack Holmes':'Lawrence of Arabia','3.0':'Gravity','3.5':'教父','1.5':'普罗米修斯','5.0':'Navarone的枪'}这是你可能得到的结果..换成键=下一个(它)是一个typo@Patrick哈,你的解决方案奏效了。这就是我想要的。非常感谢。顺便说一句,请编辑部件键=下一步(it)。@007mrviper:验证您的结果。还有一些工作要做。整个列表都将作为该项目的价值key@SubbuVidyaSekar我已经做到了。这就是为什么我接受了他的回答。{'Peter':{'Gravity':'4.5','Prometheus':'1.0','Prometheus':'4.0','Jack Holmes':'Lawrence of Arabia','3.0':'Gravity','3.5':'教父','1.5':'Prometheus','5.0':'Navarone的枪'}这就是你可能得到的结果。。