将dict列表转换为int [Python Code Academy]

时间:2013-10-10 23:15:33

标签: python python-2.7 dictionary

给每个学生一个单独的字典(例子中只有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'会起作用,但我想一次性完成。

2 个答案:

答案 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()

documentation

  

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

注意:

这不会改变x:

x=10.0
int(x)

您必须将其分配回来:

x=10.0
x=int(x)