Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.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_List_Csv - Fatal编程技术网

Python 如何通过列表(或csv文件)中的索引关联数据?

Python 如何通过列表(或csv文件)中的索引关联数据?,python,list,csv,Python,List,Csv,我正在加载三个文件.csv。我将这些文件转换为三个列表,以使它们更易于操作,并获取某些数据以进行计算和操作。问题是我需要关联这三个文件.csv或列表以获得适当的数据: 我想按年龄段计算出对该类型电影进行评级的人数(男性或女性) 文件名: movies.csv:包含电影的标识符(用逗号分隔)、电影的标题及其类型(用字符|分隔)。 电影ID、电影标题、性别1、性别2 1,《玩具总动员》(1995年),动画|儿童|喜剧 rate.csv:包含用户在 特别的电影。仅使用逗号分隔字段。 用户ID、电影

我正在加载三个文件.csv。我将这些文件转换为三个列表,以使它们更易于操作,并获取某些数据以进行计算和操作。问题是我需要关联这三个文件.csv或列表以获得适当的数据:

我想按年龄段计算出对该类型电影进行评级的人数(男性或女性)

文件名:

  • movies.csv:包含电影的标识符(用逗号分隔)、电影的标题及其类型(用字符|分隔)。 电影ID、电影标题、性别1、性别2

    1,《玩具总动员》(1995年),动画|儿童|喜剧

  • rate.csv:包含用户在 特别的电影。仅使用逗号分隔字段。 用户ID、电影ID、分级

    11193,5

  • users.csv:包含(用逗号分隔)的标识符 使用者、性别(“M”:男性,“F”:女性)和年龄范围(1:18岁以下,18岁以下: 18-24之间,25:25-34之间,35:35-44之间,45:45-49之间,50:50-55之间,56:55以上)。 用户ID、性别、年龄范围

    1,F,1

我的代码:

def opFiles_to_列表(文件名):
''打开csv并将其转换为列表''
打开(文件名为“r”,编码为“utf-8”)作为csv\U文件:
reader=csv.reader(csv_文件,分隔符=,,行终止符='\n')
新建列表=列表(读卡器)
返回新列表
def统计数据(类型ppl、类型电影):
兰戈=0
id\u电影=0
id\u用户=0
nnew_列表=[]
x=[]
如果类型为“F”:
分级列表=操作文件到分级列表(分级)
用户列表=操作文件列表(用户)
电影列表=操作文件列表(电影)
对于电影中的i\u列表:
id_电影+=1
对于i中的j:
如果j==类型电影:
#在这里,我得到的只是一些电影,比如喜剧,
#但不是那些有“分隔符:喜剧”戏剧的人
追加(电影列表[id\u movies-1])
预期输出:

输入性别:M
输入电影类型:喜剧
未成年职级18:2184
排名18-24:11239
排名25-34:22597
排名35-44:11489
排名45-49:5548
排名50-55:4184
少校56:2066
电流输出:


如果我打印
nnew_列表
,我只会获得以
和(例如)喜剧类型划分的电影,不包括那些被
|
删除的电影,例如喜剧戏剧。

解决性别问题:str.split和separate by“|”

电影和用户id是唯一的,并且在速率中也用于链接其他两个csv,我使用id作为键的字典来存储movies.csv和users.csv的数据,这是一个方便搜索的好主意

大概是这样的:

导入csv
电影={}
打开(“movies.csv”,“r”,encoding='utf-8')作为csv\u文件:
reader=csv.reader(csv_文件,分隔符=,,行终止符='\n')
读卡器中的id、标题、性别:
电影[id|]={“title”:title,“gender”:set(gender.split(“|”)}
用户={}
打开(“users.csv”,“r”,encoding='utf-8')作为csv\u文件:
reader=csv.reader(csv_文件,分隔符=,,行终止符='\n')
对于读卡器中的id、性别、年龄范围:
用户[id\u]={“年龄范围”:年龄范围,“性别”:性别}
genrep=输入(“输入类型:”)
流派电影=输入(“输入电影:”)
计数={1:0,18:0,25:0,35:0,45:0,50:0,56:0}
打开(“rate.csv”,“r”,encoding='utf-8')作为csv\u文件:
reader=csv.reader(csv_文件,分隔符=,,行终止符='\n')
对于读取器中的用户id、电影id:
user=users.get(user\u id)
movie=movies.get(movie\u id)
如果用户[“性别”]==电影[“性别”]中的genrep和流派电影:
计数[用户[“年龄范围”]+=1
打印(f“次等级18:{count['1']}”,
f“排名18-24:{count['18']}”,
f“排名25-34:{count['25']}”,
f“排名35-44:{count['35']}”,
f“排名45-49:{count['45']}”,
f“排名50-55:{count['50']}”,
f“市长级别56:{count['56']}”,
sep=“\n”
)
rate.csv中存在的每个id都存在于其他两个字典中,但如果没有,则只需验证dict.get方法是否不返回任何id即可。

“我想计算人数(男性或女性)”:如果类型为F,为什么要使用