Правильный способ форматирования словаря с несколькими записями в Python - PullRequest
0 голосов
/ 03 мая 2018

Мне просто интересно, каков наилучший / наиболее эффективный способ структурирования словаря в Python с несколькими записями. Это может быть словарь студентов или сотрудников и т. Д. В качестве аргумента указывается ключ / значение «Имя» и несколько других пар ключ / значение для каждой записи.

Например, это прекрасно работает, если у вас есть только один студент ...

student_dict = {'name': 'John', 'age': 15, 'grades':[90, 80, 75]}

Это правильный способ сделать это? Одна переменная на словарную запись? Почему-то я не думаю, что это:

student_1 = {'name': 'Fred', 'age': 17, 'grades':[85, 80, 75]}
student_2 = {'name': 'Sean', 'age': 16, 'grades':[65, 70, 100]}
student_3 = ...

Я уверен, что есть простой способ структурировать это, где было бы легко добавлять новые записи и искать существующие записи в одном месте, я просто не могу обернуться вокруг этого.

Спасибо

Ответы [ 3 ]

0 голосов
/ 03 мая 2018

Вам нужно выбрать ключ, который даст вам быстрый доступ к записи студента. Название кажется наиболее полезным:

students = {
    'Fred': {'name': 'Fred', 'age': 17, 'grades':[85, 80, 75]}
    'Sean': {'name': 'Sean', 'age': 16, 'grades':[65, 70, 100]}
}

Тогда вы можете получить запись для Фреда с помощью students['Fred'].

0 голосов
/ 03 мая 2018

Прежде всего, вы должны использовать словари внутри словарей. Например:

people = {   "John":{"age":15, "school":"asborne high"},
             "Alex":{"age":32, "work":"microsoft"},
             "Emily":{"age":21, "school":"florida state"}   }

Используя этот метод, вы можете эффективно индексировать любое значение только по его имени:

print(people["Alex"]["age"])

Во-вторых, если вы стремитесь к удобочитаемости и простоте использования, убедитесь, что правильно отформатировали объекты многомерного словаря. Под этим я подразумеваю, что вы должны стараться придерживаться не более двух структур данных для ваших пользовательских объектов. Если вам нужно составить список собак, их окрасов, имени и возраста, вы должны использовать структуру, подобную этой:

dogs = {     "Lisa":{"colors":["brown","white"], "age":4 }, 
             "Spike":{"colors":["black","white"], "age":10}    }

Обратите внимание, как я не переключаюсь между кортежами и списками или словарями и списками. Консистенция является ключевой.

При организации числовых данных придерживайтесь той же концепции.

numbers = {     "A":[2132.62, 422.67, 938.2218113, 3772.7026994],
                "B":[5771.11, 799.26, 417.9011772, 8922.0116259],
                "C":[455.778, 592.224, 556.657001. 66.674254323]    }
0 голосов
/ 03 мая 2018

Используйте словарь или список для хранения словарей. Поскольку вы, похоже, хотите иметь возможность ссылаться на отдельные словари по именам, я предлагаю словарь словарей:

students = {'student_1': {'name': 'Fred', 'age': 17, 'grades':[85, 80, 75]},
            'student_2': {'name': 'Sean', 'age': 16, 'grades':[65, 70, 100]}}

Теперь вы можете обращаться к отдельным словарям по ключу:

>>> students['student_1']
{'name': 'Fred', 'age': 17, 'grades': [85, 80, 75]}

Если вас не интересуют имена, или вам нужно сохранить порядок, используйте список:

students = [{'name': 'Fred', 'age': 17, 'grades':[85, 80, 75]},
            {'name': 'Sean', 'age': 16, 'grades':[65, 70, 100]}]

Доступ к ним по индексу:

>>> students[0]
{'name': 'Fred', 'age': 17, 'grades': [85, 80, 75]}

Или перебрать их:

for student in students:
    print(student['name'], student['age'], student['grades'])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...