我是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']
我假设以下事情之一是错误的,但我无法弄清楚:
帮助!
答案 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。
干杯。