如何存储和访问具有不同值的多个项目?

2024-09-28 21:49:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我想要一个数据结构来存储3件事-书名,一个用户给这本书的分数,以及有多少用户给了这本书唯一的分数:

BookName    Score   Count
Book1:      7       1
            4       2
Book2:      5       1
            9       1
            3       2
            2       1
Book3:      9       3
Book4:      8       1
            9       1
            4       2

哪种数据结构允许我存储这些信息并方便地访问它们

我试着用字典来解释,比如:

my_dict = [{'BookName':'Book1', 'Score': 7, 'NumberOfTimes':2}, 
       {'BookName':'Book2', 'Score': 4, 'NumberOfTimes':1}, 
       {'BookName':'Book1', 'Score': 5, 'NumberOfTimes':3}]

但是当我想显示Book1的所有实例时,它只显示第一个实例:

my_dict['BookName'=='Book1']
>>> {'BookName': 'Book1', 'NumberOfTimes': 2, 'Score': 7}

那么,哪种数据结构是最好的,或者说什么是最好的方法


Tags: 实例用户数据结构mycount分数dictscore
2条回答

我宁愿保持简单并使用以下方法:

book_dict = {"Book1" : {7:1,4:2}, "Book2" : {5:1,9:1,3:2,2:1}}

for k,v in book_dict.items():
    print (k, v)

book_dict["Book1"][7] = book_dict["Book1"][7]+1
print (book_dict["Book1"])
book_dict["Book1"][8] = 1
print (book_dict["Book1"])

结果:

Book1 {7: 1, 4: 2}
Book2 {5: 1, 9: 1, 3: 2, 2: 1}
{7: 2, 4: 2}
{7: 2, 4: 2, 8: 1}

我建议您采用如下数据结构:

book_dict = {
    'Book1': [{'NumberOfTimes':2, 'Score':7}, {'NumberOfTimes':3, 'Score':5}],
    'Book2': [{'NumberOfTimes':1, 'Score':5}]
}

这样,您就可以使用book_dict['Book1']访问特定书籍的所有实例 你还可以反复阅读一本书

相关问题 更多 >