用python编程,给出文章名,年份,出版社,第一作者第二作者等,要求类似于矩阵(表格)形式

用python编程,给出文章名,年份,出版社,第一作者第二作者等,要求类似于矩阵(表格)形式,第1张

我最开始的想法是和楼上一样的想法,但是实际 *** 作中发现了一些问题。

首先,楼主给的csv文件本身是参差的,所以只能用csv.reader取得一行的list,需要自己去解析

然后,800个的数据量也不算太小,用dict建立索引的话效率不会太高

综上,我的想法是数据结构用一个保存作者名的set和保存2位有共同著作的作者的set,这样占用的空间也比较小,然后建立表格也比较简单。

不过实现需要一点时间,晚上回家之后试着写写看吧。不过800个确实挺多,显示出来的表能有多大啊。

-----------------------------------------------------------------------------------

import csv

import itertools

if __name__ == '__main__':

reader = csv.reader(open('books.csv'))

authors = set()

pairs = set()

for line in reader:

list = line[3:]

if list[0] == 'column1': continue

if '' in list : list.remove('')

for str in list: authors.add(str)

for pair in itertools.combinations(list, 2): pairs.add(pair)

line = ''

for author1 in authors:

line += '\t' + author1

print(line)

for author1 in authors:

line = author1

for author2 in authors:

line += '\t' + ('X' if author1 == author2 else '1' if ((author1, author2) in pairs or (author2, author1) in pairs) else '0')

print(line)

我写的,从楼上的代码学习到了itertools.combinations的用法,感谢。

代码修改了一次,我被某种一切都是对象的语言控制了,不用类不舒服斯基。现在这样看舒服多了。

musics = {

    'Jackson': ['Music A', 'Music B'],

    'Lady Gaga': ['Umbrella', 'XXX']

}

上述代码展示了一个dict,key是作者名字,value是一个存有歌名的list。

当用户输入作者后,就可以查表打印出该作者的歌名。

当然, list里可以不止是字符串表示的歌名,而是含有歌曲各种数据的dict或者object。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11530745.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存