将值添加到列表中

时间:2011-03-23 02:54:08

标签: python

我是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. 我应该使用字典或元组而不是列表
  3. 帮助!

4 个答案:

答案 0 :(得分:4)

您应该使用嵌套结构。

comicdb.append((title, issue, publisher))

答案 1 :(得分:3)

答案很简单。您在列表中插入3个单词,而不是附加包含3个单词的列表。

应该是这样的:

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

答案 2 :(得分: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

答案 3 :(得分:0)

尽管我赞扬您从头开始编写数据库的努力,但我必须建议您查看SQLAlchemy - 一个Python“对象关系映射器”,它允许您将Python对象连接到类似SLQ的数据库(主要是SQLite,最简单,无服务器的)。令人惊讶的是,使用非常少的代码可以实现复杂性。它干净,功能强大,易于理解,并且发展迅速。

我在工作中非常成功地使用它,并且在家里跟踪我所有的女儿照片(我家里的女儿的照片比工作中的卡西尼太空船更多兆(teras?)),请注意)

所以,如果你只是练习 - 继续吧。如果你想站稳脚跟,并有一个很好的应用程序来跟踪你的漫画,那么看看任何数据库管理器,但我推荐Python / SQLAlchemy。

干杯。