You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中多条目字典的高效结构化方法探究

Great question—you’re absolutely right that creating separate variables like student_1, student_2 is clunky and not scalable at all, especially once you have more than a handful of entries. Let’s break down the best, most efficient ways to manage multiple student/employee records in Python, depending on your use case:

1. List of Dictionaries (Most Intuitive for Sequential Access)

This is the go-to approach if you need to work with all entries in order, or batch-process them (like calculating average grades). Just store each student/employee dictionary inside a single list:

students = [
    {'name': 'John', 'age': 15, 'grades': [90, 80, 75]},
    {'name': 'Emily', 'age': 16, 'grades': [95, 88, 92]},
    {'name': 'Mike', 'age': 15, 'grades': [80, 75, 85]}
]

How to use it:

  • Access a specific entry by index: students[0]['name'] returns 'John'
  • Loop through all entries easily:
    for student in students:
        avg_grade = sum(student['grades']) / len(student['grades'])
        print(f"{student['name']} has an average grade of {avg_grade:.1f}")
    
2. Dictionary of Dictionaries (Fast Lookup by Unique ID)

If you need to quickly find a specific entry using a unique identifier (like a student ID, employee number, or email), nest dictionaries. The outer dictionary uses the unique ID as its key, and the value is the record dictionary:

students = {
    's101': {'name': 'John', 'age': 15, 'grades': [90, 80, 75]},
    's102': {'name': 'Emily', 'age': 16, 'grades': [95, 88, 92]},
    's103': {'name': 'Mike', 'age': 15, 'grades': [80, 75, 85]}
}

How to use it:

  • Look up a record instantly (O(1) time complexity): students['s102']['grades'] returns [95, 88, 92]
  • Add a new entry easily:
    students['s104'] = {'name': 'Sarah', 'age': 16, 'grades': [88, 90, 93]}
    
3. Dataclasses (Structured, Maintainable Code)

For more complex projects or when you want strict, clear structure (to avoid typos like 'nme' instead of 'name'), use Python's dataclasses (available in Python 3.7+). This turns your records into proper objects with defined fields:

from dataclasses import dataclass
from typing import List

@dataclass
class Student:
    name: str
    age: int
    grades: List[int]

# Store instances in a list or dictionary
students = [
    Student('John', 15, [90, 80, 75]),
    Student('Emily', 16, [95, 88, 92]),
    Student('Mike', 15, [80, 75, 85])
]

How to use it:

  • Access fields with dot notation (cleaner and IDE-friendly): students[0].name returns 'John'
  • For fast lookups, pair with a dictionary:
    students_by_id = {
        's101': Student('John', 15, [90, 80, 75]),
        's102': Student('Emily', 16, [95, 88, 92])
    }
    

Quick Recommendation:

  • Use List of Dictionaries for simple, small-scale projects where you need to iterate over all records.
  • Use Dictionary of Dictionaries when you need fast, direct access to individual records via a unique ID.
  • Use Dataclasses for larger projects where code clarity and maintainability are priorities.

内容的提问来源于stack exchange,提问作者JD2775

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:34:47