Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中从CSV文件创建字典_Python_Csv_Dictionary - Fatal编程技术网

在python中从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

我有以下格式的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 = 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。