Как я могу хранить и получать доступ к нескольким экземплярам, ​​но с разными значениями? - PullRequest
0 голосов
/ 05 июля 2018

Я хочу, чтобы в структуре данных хранились 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 голосов
/ 05 июля 2018

Я бы предпочел быть простым и использовать следующее:

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}
0 голосов
/ 05 июля 2018

Я хотел бы предложить вам следующую структуру данных:

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

таким образом вы можете получить доступ ко всем экземплярам конкретной книги, используя book_dict['Book1'] Вы также сможете перебирать книги.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...