如何在函数中作为变量传递时获取字典的信息?

时间:2015-09-03 08:32:25

标签: python

我希望从字典/列表中获取信息,同时将其作为变量传递到Python中的函数中。

我会解释我尝试做的事情,因此您可以更轻松地提供建议。

我有三个信息目录:

lloyd = {
    "name": "Lloyd",
    "homework": [90.0, 97.0, 75.0, 92.0],
    "quizzes": [88.0, 40.0, 94.0],
    "tests": [75.0, 90.0]
}
alice = {
    "name": "Alice",
    "homework": [100.0, 92.0, 98.0, 100.0],
    "quizzes": [82.0, 83.0, 91.0],
    "tests": [89.0, 97.0]
}
tyler = {
    "name": "Tyler",
    "homework": [0.0, 87.0, 75.0, 22.0],
    "quizzes": [0.0, 75.0, 78.0],
    "tests": [100.0, 100.0]
}

我还有一个计算平均值的工作函数:

def average(numbers):
    total = sum(numbers)
    total = float(total) / len(numbers)
    return total

我正在创建一个新功能,将学生数据拉到例如alice作为变量,所以我可以计算出“家庭作业”的平均值。列表。

目前我有以下功能,但它只是输出单词alice,而不是'homework'的值。

def get_average(student):
    homework = average(student['homework'][0])

我不确定如何写这个,但是一旦语法/方法正确,我确定它很容易。

2 个答案:

答案 0 :(得分:3)

您可以像这样重写您的功能:

/**
 * Developers
 *
 * @ORM\Table(name="developers")
 * @ORM\Entity(repositoryClass="Artel\ProfileBundle\Entity\DeveloperRepository")
 */
 class Developer extends CustomUser
 {
///////////other field, I visible for you only field with relation ship

/**
 * @ORM\OneToOne(targetEntity="TalentFiles", mappedBy="developer", cascade={"persist"})
 */
protected $talent_file;

/**
 * @ORM\OneToMany(targetEntity="CodeUserReference", mappedBy="developer", cascade={"persist", "remove"})
 */
protected $reference_developer;

/**
 * @ORM\OneToMany(targetEntity="CodeProjectNotificationLater", mappedBy="developer", cascade={"persist", "remove"})
 */
public $notification_later;

/**
 * @ORM\ManyToOne(targetEntity="Teams", inversedBy="developers")
 * @ORM\JoinColumn(name="team_id", nullable = true, referencedColumnName="id")
 * */
protected $teams;

/**
 * @ORM\OneToMany(targetEntity="CodeTalentsProjects", mappedBy="authorId", cascade={"persist"})
 */
protected $projects;

/**
 * @ORM\OneToMany(targetEntity="Comments", mappedBy="talent", orphanRemoval=true)
 */
public $comment;

/**
 * @ORM\ManyToOne(targetEntity="Artel\ProfileBundle\Entity\Users", inversedBy="add_developer")
 */
protected $added_by;

答案 1 :(得分:1)

您当然可以直接使用现有功能,如下所示:

print average(alice['homework'])
print average(alice['quizzes'])
print average(alice['tests'])

显示:

97.5
85.3333333333
93.0

您还可以创建一个显示这些功能的函数:

def get_averages(student):
    print "Averages for:", student['name']

    for work in ['homework', 'quizzes', 'tests']:
        print "  {}: {}".format(work, average(student[work]))

get_averages(alice)

显示:

Averages for: Alice
  homework: 97.5
  quizzes: 85.3333333333
  tests: 93.0