Python编程技巧 -- 使用字典
Python Programming Skills -- Using Dictionary
Dictionary, 即字典,这是Python语言的一种重要的数据结构;Python字典是以键(key)值(value)对为元素,来存储数据的集合。
前文提到Python列表,即List; 但字典和列表不同,它使用大括号{ }来指定包装。
python
{ key1 : value1, key2 : value2, key3 : value3... ... }
本文简要介绍字典及其使用技巧,包括如何创建字典、添加值,字典条目及引用,以及如何用构造器创建字典等。
1. 创建字典
比如,在登记人员基本信息时,可采用键值对存储学生信息:
python
students = { 'name' : 'Bob', 'age' : 20, 'gender' : 'male'}
这个students就是典型的字典,表达了学生的姓名、年龄和性别这些基本信息。由此看来,它很像一个二维表格。
在字典中,键 是一系列唯一的值,同一个字典的键不能重复。同时,每一个键都对应一个数据对象,叫作值。上面这个students字典对象中,名叫Bob的学生,具有年龄20,和性别男的特征;如果换成另一个人(对象),那么,就类似于一张二维表,可存入不同学生的数据信息。
2. 给字典添加值
与上述字典类似,我们创建另一个字典,即一个给学生评分的字典:
python
grade_dict = {'Bob' : 3.9, 'Sue' : 3.9, 'Dick' : 2.5}
上述语句包含了三个条目。键分别为字符串'Bob', 'Sue' 和'Dick'; 它们分别对应于值3.9, 3.9 和2.5。
创建了字典后,可以给字典添加条目,也就是给字典添加值。如下代码:
python
grade_dict['Bill G'] = 4.0
此时,打印这个字典,会发现真正添加了这个新条目,运行结果如下图:
3. 键的类型
字典需要遵循以下的规则,即所有键必须是相同的类型 ,或者,至少是可以兼容的类型,例如:整型和浮点型。
在确定相同类型的前提下,字典如果尝试获取特定键的值且该键不存在,那么Python会抛出异常。为了避免此类情况发生,可以使用get方法确保指定的键存在,如下格式,
python
dictionary.get(key [, default_value])
方括号中表示可选条目。如果键存在,就返回其在字典中的对应值;否则,返回default_value(如果已指定), 或者返回None(如果未指定)。
我们创建另一段代码,用来计算单词的出现频率:
python
s = input("Enter a string: ")).split()
word_counter = {}
for word in s:
word_counter[word] = word_counter.get(word, 0) + 1
最后,打印输出结果如下图:
上述代码按照一定的逻辑执行:
1) 当找到一个新单词时,将该单词以值0 + 1的形式输入字典中;
2) 如果找到了已有单词,则get返回该单词的出现频率,然后将其加1;
3) 因此,如果找到了一个单词,则它的频率计数增加1;如果没有找到该单词,它将被添加到字典中,值为1。split方法用于将字符串分成单个单词列表。
4. 字典条目
在这个字典中,它的条目是有序的,可更改的,并且不允许重复;字典每个条目都由键值对的形式表示;如果要表示它,可以使用键名进行引用。
让我们换一个字典,如下所示:
python
thisdict = {
"brand": "Ford",
"model": "Mustang",
"year": 1964
}
用这种格式来表示字典,显得清晰、简约。要引用字典条目,用以下命令:
python
print(thisdict["brand'])
打印输出的结果:
python
"Ford"
字典条目的值,可以是任意数据类型。看以下代码示例:
python
thisdict = {
"brand": "Ford",
"electric": False,
"year": 1964,
"colors": ["red", "white", "blue"]
}
它包含的数据类型由有字符串型、整型、布尔型和列表型。
5. 有序的字典
从 Python 版本 3.7 开始,字典变成有序的。(在 Python 3.6 及更早版本中,字典是无序的。)
当我们说字典是有序的时,这意味着项目有一个定义的顺序,并且该顺序不会改变。
无序意味着字典条目没有定义的顺序,您不能像上述示例一样,使用索引引用具体的条目。
当然,字典是可以改变的,这意味着,我们能修改、增加或者删除所创建字典的条目。
键不允许复制。字典不允许两个条目是同一个键。示例代码如下:
python
thisdict = {
"brand": "Ford",
"model": "Mustang",
"year": 1964,
"year": 2020
}
print(thisdict)
运行结果如下图:
可以看到,虽然上面的字典thisdict里,键year拥有两个值:1964和2020, 但实际上只允许一个值存在,因此后者覆盖了前者,结果为:
python
{'brand': 'Ford', 'model': 'Mustang', 'year': 2020}
6. 类型与dict()构造器
在Python语言中,可以用type方法来得到字典的类型,如下代码:
python
thisdict = {
"brand": "Ford",
"model": "Mustang",
"year": 1964
}
print(type(thisdict))
执行结果如下图:
可以看到,返回的结果是<class 'dict'>,说明字典是对象(拥有类的实例)。
Python提供了dict()构造器来创建字典, 示例代码如下:
python
thisdict = dict(name = "John", age = 36, country = "Norway")
print(thisdict)
运行输出结果如下图:
可以看到,被赋值的变量thisdict,已经变身为一个字典。
7. 小结
字典是对象。字典的数据可以是任意的数据类型;它的条目由键值对组成,每个条目只允许有一个键;字典可以修改、添加和删除条目。字典可以由构造器生成。
技术好文陆续推出,全部亲测,敬请关注。
喜欢就点赞哈,您的支持,我的动力。😊