2.12.6 key的选择

我们已经了解了用字符串作为key的情况。数值类型作为key的情况也是合法的。


students = {
    1: {
        "name": "Liu",
        "id": "123456"
    },
    2: {
        "name": "Xu",
        "id": "123457"
    }
}

print(students[1])

执行结果如下:


{'name': 'Liu', 'id': '123456'}

但是,合法的不一定就是合理的。key的作用是让我们可以精准定位想要找的value,所以,一个合理的key应该具有以下特点。

·唯一性,一个key应该唯一对应一个value。

·代表性,key在逻辑上应该能代表一个value。比如,学号可以作为学生信息的key,身份证号可以作为身份信息的key。顺序递增的序列号作为key就不是很合适,虽然它具有唯一性。

所以,以上的例子写成如下形式更加合理。


students = {
    "123456": {
        "name": "Liu",
        "id": "123456"
    },
    "123457": {
        "name": "Xu",
        "id": "123457"
    }
}

print(students)

执行结果如下:


{'123456': {'name': 'Liu', 'id': '123456'}, '123457': {'name': 'Xu', 'id': '123457'}}

在以上的例子中,学号作为key是合理的,因为它是唯一的,并且具有学生信息的代表性。学生姓名虽然很具有代表意义,但是我们无法保证它的唯一性,因为一个班级可能有3个“陈子涵”,可能有5个“张馨月”。

Key的选择不仅关乎代码的合法性,更关乎逻辑的合理性。