给每个学生一个单独的字典(例子中只有1个,为了节省空间),所需的输出的分数为int而不是float,格式为:
Lloyd
[90, 97, 75, 92]
[88, 40, 94]
[75, 90]
以下代码效果最好除了它将它们输出为float,分级器(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键写一个单独的'print'会起作用,但我想一次性完成。
答案 0 :(得分: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]
答案 1 :(得分: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)