从 CSV 文件创建字典,
Creating dictionary from CSV file,
对于以下 CSV 文件:
A,B,C
A1,B1,C1
A1,B2,C2
A2,B3,C3
A2,B4,C4
如何让我的字典看起来像这样:
{'A1': {'B1': 'C1', 'B2' : 'C2'}, 'A2': {'B3': 'C3', 'B4' : 'C4'}}
我正在使用以下代码:-
EgDict = {}
with open('foo.csv') as f:
reader = csv.DictReader(f)
for row in reader:
key = row.pop('A')
if '-' in key:
continue
if key not in result:
new_row = {row.pop('B'): row.pop('C')}
result[key] = new_row
else:
result[key][row.pop('B')].append(row.pop('C'))
我收到以下错误:-
AttributeError: 'dict' object has no attribute 'append'
我做错了什么?
res = {}
with open('foo.csv') as f:
reader = csv.reader(f)
for i,item in enumerate(reader):
if i == 0: continue
a,b = item[0],item[1:]
if a not in res:
res[a] = {}
res[a].update( {b[0]:b[1]} )
字典没有append
方法。这将用于列表。
您可以考虑改用以下代码:
d = {}
with open('foo.csv') as f:
reader = csv.DictReader(f)
for row in reader:
d.setdefault(row['A'], {}).update({row['B']: row['C']})
print(d)
# {'A1': {'B1': 'C1', 'B2' : 'C2'}, 'A2': {'B3': 'C3', 'B4' : 'C4'}}
setdefault
设置一个具有默认 {}
值的新键,当一个键不存在时,更新方法使用新值更新该键处的字典。
对于以下 CSV 文件:
A,B,C
A1,B1,C1
A1,B2,C2
A2,B3,C3
A2,B4,C4
如何让我的字典看起来像这样:
{'A1': {'B1': 'C1', 'B2' : 'C2'}, 'A2': {'B3': 'C3', 'B4' : 'C4'}}
我正在使用以下代码:-
EgDict = {}
with open('foo.csv') as f:
reader = csv.DictReader(f)
for row in reader:
key = row.pop('A')
if '-' in key:
continue
if key not in result:
new_row = {row.pop('B'): row.pop('C')}
result[key] = new_row
else:
result[key][row.pop('B')].append(row.pop('C'))
我收到以下错误:-
AttributeError: 'dict' object has no attribute 'append'
我做错了什么?
res = {}
with open('foo.csv') as f:
reader = csv.reader(f)
for i,item in enumerate(reader):
if i == 0: continue
a,b = item[0],item[1:]
if a not in res:
res[a] = {}
res[a].update( {b[0]:b[1]} )
字典没有append
方法。这将用于列表。
您可以考虑改用以下代码:
d = {}
with open('foo.csv') as f:
reader = csv.DictReader(f)
for row in reader:
d.setdefault(row['A'], {}).update({row['B']: row['C']})
print(d)
# {'A1': {'B1': 'C1', 'B2' : 'C2'}, 'A2': {'B3': 'C3', 'B4' : 'C4'}}
setdefault
设置一个具有默认 {}
值的新键,当一个键不存在时,更新方法使用新值更新该键处的字典。