1

给每个学生一个单独的字典(例如只有 1 个,以节省空间)所需的输出具有 int 而不是 float 的分数,格式为:

Lloyd
[90, 97, 75, 92]
[88, 40, 94]
[75, 90]

以下代码效果最好,除了它将它们输出为浮点数,分级机(http://www.codecademy.com/courses/python-beginner-en-qzsCL/0/4)不会接受。

lloyd = {
        "name": "Lloyd",
        "homework": [90.0, 97.0, 75.0, 92.0],
        "quizzes": [88.0, 40.0, 94.0],
        "tests": [75.0, 90.0]
}

students = [dict(lloyd), dict(alice), dict(tyler)]

for studi in students:
#   studi = [int(s) if s.isdigit() else s for s in studi]
    print "{}\n{}\n{}\n{}\n\n".format(studi['name'], \
    studi['homework'], studi['quizzes'], \
    studi['tests'])

如何格式化嵌套列表中的数字?

我很确定为每个 dict 键编写一个单独的“打印”是可行的,但我想一次性完成。

4

2 回答 2

3

鉴于此,比如说,lloyd['homework'] == [90.0, 97.0, 75.0, 92.0]

您可以执行以下任一操作:

[int(f) for f in lloyd['homework']]
Out[53]: [90, 97, 75, 92]

(令人困惑的是,你基本上在你的代码中有,只是注释掉了)

或者您可以使用map

map(int,lloyd['homework'])
Out[55]: [90, 97, 75, 92]
于 2013-10-10T23:34:16.627 回答
1

任务似乎接受浮动问题是你如何打印它,这会起作用:

for studi in students:
    print studi['name']
    print studi['homework']
    print studi['quizzes']
    print studi['tests']

如果你想转换为 int 你可以这样做(但你不必为此分配):

def to_int(numbers):
    return [int(i) for i in numbers]

print to_int(studi['tests'])

也改变:

students = [dict(lloyd), dict(alice), dict(tyler)]

至:

students = [lloyd, alice, tyler]

它已经是一个字典。

文档int()

将数字或字符串 x 转换为整数,如果没有给出参数,则返回 0。

笔记:

这不会改变 x:

x=10.0
int(x)

你必须像这样分配它:

x=10.0
x=int(x)
于 2013-10-10T23:37:45.897 回答