向列表添加值

3 投票
4 回答
20461 浏览
提问于 2025-04-16 14:14

我刚开始学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. 我应该用字典或元组,而不是列表

求助!

4 个回答

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
4

你应该使用嵌套结构。

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

这个答案很简单。你应该把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

撰写回答