向列表中添加值

3

我是一名R语言新手,正在尝试为我的漫画书创建一个基本的“数据库”。然而,我遇到了一个问题。

我的想法是把每个新条目放在一个列表中。我认为我可以设置列表如下。

[Thor, 50, Marvel]
[Thor, 51, Marvel]
[Thor, 52, Marvel]
...
eventually, I 'd like to include entries for story arc, writer, artist, etc.

然而,我正在使用以下代码输入漫画书,并发现每个新条目都只是添加到列表的末尾。

option = 0
comicdb = []

while option != 3:
    print "--------------------------"
    print "1. Add a New Comic Book"
    print "2. Print the Database"
    print "3. Quit"
    option = int(raw_input("Pick an Option: "))
    if option == 1:
        title = raw_input("Comic Book Title: ")
        issue = int(raw_input("Issue Number: "))
        publisher = raw_input("Publisher: ")
        comicdb.append(title)
        comicdb.append(issue)
        comicdb.append(publisher)
        print comicdb

运行代码几次后,列表的样子如下:

['Thor', 50, 'Marvel', 'Thor', 51, 'Marvel', 'Thor', 52, 'Marvel']

我猜其中有一件事情是错的,但我想不出来是哪一个:

  1. 使用append命令是错误的
  2. 我应该使用字典或元组而不是列表

帮帮我!


我不完全理解你想要发生什么。你问题顶部的结构应该是什么?每行都有一个列表,但这些列表中的内容是什么?它们应该像[['a', 1], ['b', 2]]一样在列表中吗? - senderle
那实际上应该是三个单独的列表。 - ATMathew
好的,它们存储在哪里? - senderle
4个回答

4
你应该使用嵌套结构。
comicdb.append((title, issue, publisher))

4
答案很简单。你需要将三个单词插入到列表中,而不是将包含这三个单词的列表附加到列表末尾。
应该像这样:
option = 0
comicdb = []

while option != 3:
    print "--------------------------"
    print "1. Add a New Comic Book"
    print "2. Print the Database"
    print "3. Quit"
    option = int(raw_input("Pick an Option: "))
    if option == 1:
        title = raw_input("Comic Book Title: ")
        issue = int(raw_input("Issue Number: "))
        publisher = raw_input("Publisher: ")
        temp_list = []
        temp_list.append(title)
        temp_list.append(issue)
        temp_list.append(publisher)
        comicdb.append(temp_list)
        print comicdb

1
你需要一个列表的列表或者一个字典的列表。
record = {}
record['title'] = raw_input("Comic Book Title: ")
record['issue'] = int(raw_input("Issue Number: "))
record['publisher'] = raw_input("Publisher: ")
comicdb.append(record)
print comicdb

0

虽然我很赞赏你从零开始编写数据库的努力,但我必须建议你看一下SQLAlchemy - 一个Python“对象关系映射器”,它允许你将Python对象连接到类似SQL的数据库(主要是SQLite,最简单的无服务器数据库)。我对可以用非常少的代码实现的复杂性感到惊讶。它干净、强大、易于理解,并且快速增长。

我在工作中非常成功地使用它,在家里用来跟踪我女儿的所有照片(我家里的照片比我在工作中从卡西尼号航天器上拍摄的照片还多,你知道的)。

所以,如果你只是练习 - 那就继续吧。如果你想站在坚实的基础上,拥有一个用于跟踪漫画的伟大而整洁的应用程序,那么看看任何数据库管理器,但我推荐Python / SQLAlchemy。

干杯。


谢谢建议。我只想从基础开始,最终逐步转向像SQLAlchemy这样的东西。 - ATMathew
我仍然认为实现SQLAlchemy解决方案(或者说任何Python的数据库管理器)更容易。换句话说,你不需要“摸索” - 它们非常易于访问。 - Escualo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接