你如何在课堂上使用字典?

时间:2014-11-26 00:03:08

标签: python

我必须将name和student_num放在字典中。 问题是我不知道如何在课堂上调用字典?我怎么能以这种格式输入name和student_num?

class Cool():
    def __init__(self, name, student_num, new_dict):
        self._key = name
        self._value = student_num
        self._new_dict = new_dict


    def get_name(self):
        return self._key

    def get_student_number(self):
        return self._value

    def new_dict(self):
        return self._new_dict 

     #  I want to put name and student_name in this format:
     # {'name': 'student name'}
    def get_dict(self, new_dict):
        self._new_dict = {}
        self._new_dict[self._key] = self._value
        return self._new_dict[self._key]
    def __str__(self):
        return str(self._new_dict[self._key])

现在我测试这段代码

>>>a = Cool({}, 'diana', 1234)
>>>print(a)

我收到以下错误:

文件" C:\ Program Files(x86)\ Wing IDE 101 5.0 \ src \ debug \ tserver_sandbox.py",第20行, str builtins.TypeError:' int'对象不可订阅

2 个答案:

答案 0 :(得分:1)

你的电话很酷。

尝试:

>>>a = Cool('diana', 1234, {})

更多建议:

class Cool():
    def __init__(self, name, student_num, new_dict):
        self._key = name
        self._value = student_num
        self._new_dict = new_dict

    def get_name(self):
        return self._key

    def get_student_number(self):
        return self._value

    def get_dict(self):
        self._new_dict[self._key] = self._value
        return self._new_dict[self._key]

    def __str__(self):
        return str(self._new_dict[self._key])

为了让print工作(代码当前的方式)。你需要先调用get_dict。

您可以执行以下操作:

a = Cool('diana', 1234, {})
print(a.get_dict())

或者您可以编辑代码以便更早地处理dict。

答案 1 :(得分:0)

编辑问题,

>>>a = Cool({}, 'diana', 1234)

这样做:

class Cool():
    def __init__(self, name, student_num, new_dict):

        self._key = name            # name is {}
        self._value = student_num   # student_num is 'diana'
        self._new_dict = new_dict   # new_dict is 1234

然后

>>print(a)

这样做:

    def __str__(self):
        return str(self._new_dict[self._key])

    => _new_dict is 1234
    => return 1234[self._key]
    => self._key is {}
    => return 1234[{}]
    => TypeError: 'int' object is not subscriptable

something[]是一个下标,一个切片,操作,Python不能用数字来做。

我不清楚整个代码应该做什么,但它看起来比它需要的代码多几倍。我假设其中一些是由分配要求强制实施的?

你是否为每个学生创建一个“酷”课程?还是为很多学生准备的“酷”课程?它看起来像是不确定的那一刻 - 如果它是每个学生一个Cool课程,将一个名字放在字典中并再次取出它不会给课程增加任何东西。如果它是很多学生的一个Cool课程,那么get_name没有意义,因为会有很多名字,而get_student_number需要一种方法来识别哪个学生。