Python逐行读取文件并转换为字典

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

我在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.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