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的枪'}这就是你可能得到的结果。。