用python编程。

青木震雷 2021-09-18 16:37 362 次浏览 赞 129

最新问答

  • 天晴0608

    我最开始的想法是和楼上一样的想法,但是实际作中发现了一些问题。
    首先,楼主给的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的用法,感谢。
    代修改了一次,我被某种一切都是对象的语言控制了,不用类不舒服斯基。现在这样看舒服多了。

    浏览 181赞 72时间 2023-05-23
  • 老幺2010

    1.读:使用csv模块读入或者自己写reader
    2.建立索引:使用dict,以著作名为key,如果有相同的著作的作者加到这个key的value里面。

    浏览 234赞 94时间 2022-05-03

用python编程。