如何存储和访问多个出现的项目,但它们的值不同?

时间:2018-07-05 06:36:18

标签: python dictionary indexing data-structures

我想要一个数据结构来存储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}

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

2 个答案:

答案 0 :(得分:1)

我建议您使用以下数据结构:

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

通过这种方式,您可以使用book_dict['Book1']访问特定书籍的所有实例 您还可以遍历一本书。

答案 1 :(得分:1)

我宁愿保持简单并使用以下内容:

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}