Python逐行读取文件并转换为字典
我在file.sec中有以下数据:Python逐行读取文件并转换为字典,python,Python,我在file.sec中有以下数据: goog,100 goog,101 goog,103 micro,200 micro,201 face,99 我想将此数据转换为字典: {'goog':[100101103],'micro':[200201],'face':[99]} 我尝试了下面的代码,但每当值从goog变为micro时,它就会清除列表,结果是:{'goog':[99],'micro':[99],'face':[99]} allD = {} allN = [] f = open('file
goog,100
goog,101
goog,103
micro,200
micro,201
face,99
我想将此数据转换为字典:
{'goog':[100101103],'micro':[200201],'face':[99]}
我尝试了下面的代码,但每当值从goog变为micro时,它就会清除列表,结果是:{'goog':[99],'micro':[99],'face':[99]}
allD = {}
allN = []
f = open('file.sec' , 'r')
for data in f:
com = data.split(',')[0]
if com not in allD.keys():
del allN[:]
allN.append( data.split(',')[1] )
allD[ com ] = allN
print allD
你可以使用defaultdict
你可以使用defaultdict
您可以使用defaultdict来解决此问题:
from collections import defaultdict
data_dict = defaultdict(list)
f = open('file.sec' , 'r')
for data in f:
key, value = data.split(',')
data_dict[key].append(value)
请注意,我是用Python3语法编写的,因此您可能需要对Python2做一些不同的操作。您可以使用defaultdict来解决这个问题:
from collections import defaultdict
data_dict = defaultdict(list)
f = open('file.sec' , 'r')
for data in f:
key, value = data.split(',')
data_dict[key].append(value)
请注意,我是用Python3语法编写的,因此您可能需要对Python2做一些稍微不同的操作。虽然距离不远,但对什么是python赋值存在误解。编写allD[com]=allN时,allD[com]不是allN的副本,而是对同一对象的另一个引用。因此,当您稍后使用del allN[:]清理allN时,实际上是清理最后一个allD[com]。您应该改为使用新对象:
allD = {}
allN = []
f = open('file.sec' , 'r')
for data in f:
com = data.split(',')[0]
if com not in allD.keys():
allN = []
allD[ com ] = allN
allN.append( data.split(',')[1] )
print allD
虽然距离不远,但对Python赋值的含义存在误解。编写allD[com]=allN时,allD[com]不是allN的副本,而是对同一对象的另一个引用。因此,当您稍后使用del allN[:]清理allN时,实际上是清理最后一个allD[com]。您应该改为使用新对象:
allD = {}
allN = []
f = open('file.sec' , 'r')
for data in f:
com = data.split(',')[0]
if com not in allD.keys():
allN = []
allD[ com ] = allN
allN.append( data.split(',')[1] )
print allD
没有defaultdict的示例:
allD = {}
allN = []
f = open('data.csv', 'r')
for data in f:
com = data.split(',')[0]
if com not in allD.keys():
allD[com] = []
allD[com].append(data.split(',')[1].strip())
print(allD)
没有defaultdict的示例:
allD = {}
allN = []
f = open('data.csv', 'r')
for data in f:
com = data.split(',')[0]
if com not in allD.keys():
allD[com] = []
allD[com].append(data.split(',')[1].strip())
print(allD)
我们应该使用strip而不是replace,我们应该使用strip