在python中从CSV文件创建字典
我有以下格式的csv文件:在python中从CSV文件创建字典,python,csv,dictionary,Python,Csv,Dictionary,我有以下格式的csv文件: age,name 3,abc 5,xyz 6,pqr 4,stu 8,lkm {3:'abc', 5:'xyz', 6:'pqr', 4:'stu', 8:'lkm'} 如何将其以以下格式放入词典: age,name 3,abc 5,xyz 6,pqr 4,stu 8,lkm {3:'abc', 5:'xyz', 6:'pqr', 4:'stu', 8:'lkm'} 更新: 麦可德- age_file = open('age.csv','r') csv_age
age,name
3,abc
5,xyz
6,pqr
4,stu
8,lkm
{3:'abc', 5:'xyz', 6:'pqr', 4:'stu', 8:'lkm'}
如何将其以以下格式放入词典:
age,name
3,abc
5,xyz
6,pqr
4,stu
8,lkm
{3:'abc', 5:'xyz', 6:'pqr', 4:'stu', 8:'lkm'}
更新:
麦可德-
age_file = open('age.csv','r')
csv_age = csv.DictReader(age_file)
for row in csv_age:
print(row)
输出:
我很懒,所以我用熊猫:
import pandas as pd
df = pd.read_csv('test.csv')
dd = {}
for ii, age in enumerate(df.age):
dd[age] = df.name.iloc[ii]
不过,我同意上面的评论,即您将在下一次相同年龄显示为密钥时,删除以前以给定年龄作为密钥的条目。除了年龄和姓名以外的问题。如果姓名/年龄为uniq,则可以使用:
import csv
my_result={}
with open('age.csv', 'rb') as csvfile:
for age,name in csv.reader(csvfile, delimiter=','):
my_result[age]=name
但我希望defaultdict更好地供您使用。并使其在一个年龄段拥有多个姓名时更加稳健:
import csv
from collection import defaultdict
my_result=defaultdict(list)
with open('age.csv', 'rb') as csvfile:
for row in csv.reader(csvfile, delimiter=','):
my_result[age].append(name)
在这种情况下,结果将是:
{1:[“bob”,“john”]、3:[“bill”]、6:[“Georges”,“Monica”]}您是否保证不会有任何具有重复年龄的条目?继续问这个问题:您确定不希望切换键/值以使名称映射到它们的年龄?我无法发布整个文件,我很抱歉没有指出这一点,但是的,会有重复的值。但这并不意味着我将只附加其中一个。如果我的文件的年龄为3,3,3,那么我的字典中也会有3,3,3作为键,值将是相应的名称。@RicardoCárdenes我尝试过这些方法,但我不断收到一个错误,说列表对象只能是int,或slices而不能是str。@RicardoCárdenes好的,我知道了!!我使用了.strip().split()方法,并做了一些类似于我的_dict={age:number}Thansk的事情来获得所有的帮助!对于代码的第二部分,shell给了我一个错误,说dict对象没有属性append。