网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
需要注意的是,keys()方法返回的是dict\_keys类型的对象,而非列表类型,但是可以像列表一样使用。
#### 1.4.2 values()
values()方法返回字典中所有值的列表:
dict1 = {‘name’: ‘Tom’, ‘age’: 18, ‘gender’: ‘male’}
print(dict1.values()) # 输出 dict_values([‘Tom’, 18, ‘male’])
同样,values()方法返回的是dict\_values类型的对象,而非列表类型,但是可以像列表一样使用。
#### 1.4.3 items()
items()方法返回字典中所有键值对的列表,每个键值对以元组的形式呈现:
dict1 = {‘name’: ‘Tom’, ‘age’: 18, ‘gender’: ‘male’}
print(dict1.items()) # 输出 dict_items([(‘name’, ‘Tom’), (‘age’, 18), (‘gender’, ‘male’)])
同样,items()方法返回的是dict\_items类型的对象,而非列表类型,但是可以像列表一样使用。
#### 1.4.4 pop()
pop()方法可以从字典中删除指定的键值对,并返回对应的值,如果键不存在,则返回指定的默认值:
dict1 = {‘name’: ‘Tom’, ‘age’: 18, ‘gender’: ‘male’}
value = dict1.pop(‘age’)
print(value) # 输出 18
print(dict1) # 输出 {‘name’: ‘Tom’, ‘gender’: ‘male’}
#### 1.4.5 popitem()
popitem()方法可以随机删除字典中的一个键值对,并返回对应的键和值:
dict1 = {‘name’: ‘Tom’, ‘age’: 18, ‘gender’: ‘male’}
key, value = dict1.popitem()
print(key, value) # 输出 gender male
print(dict1) # 输出 {‘name’: ‘Tom’, ‘age’: 18}
#### 1.4.6 update()
update()方法可以将一个字典中的元素添加到另一个字典中,如果有相同的键,则用新字典中的值覆盖原字典中的值:
dict1 = {‘name’: ‘Tom’, ‘age’: 18, ‘gender’: ‘male’}
dict2 = {‘name’: ‘Jerry’, ‘email’: ‘jerry@example.com’}
dict1.update(dict2)
print(dict1) # 输出{‘name’: ‘Jerry’, ‘age’: 18, ‘gender’: ‘male’, ‘email’: ‘jerry@example.com’}
### 1.5 实操案例代码
#### 1.5.1 案例一:统计字符串中每个字符出现的次数
def count_char(str1):
char_dict = {}
for char in str1:
if char in char_dict:
char_dict[char] += 1
else:
char_dict[char] = 1
return char_dict
str1 = ‘hello, world!’
print(count_char(str1))
输出 {‘h’: 1, ‘e’: 1, ‘l’: 3, ‘o’: 2, ‘,’: 1, ’ ': 1, ‘w’: 1, ‘r’: 1, ‘d’: 1, ‘!’: 1}
#### 1.5.2 案例二:合并多个字典
dict1 = {‘name’: ‘Tom’, ‘age’: 18}
dict2 = {‘gender’: ‘Male’}
dict3 = {‘email’: ‘tom@example.com’}
dict4 = {}
for d in (dict1, dict2, dict3):
dict4.update(d)
print(dict4)
输出 {‘name’: ‘Tom’, ‘age’: 18, ‘gender’: ‘Male’, ‘email’: ‘tom@example.com’}
#### 1.5.3 案例三:根据字典中的值对字典排序
def sort_dict(dict1):
dict2 = {k: v for k, v in sorted(dict1.items(), key=lambda item: item[1])}
return dict2
dict1 = {‘Tom’: 75, ‘Jerry’: 90, ‘Alice’: 80, ‘Bob’: 85}
print(sort_dict(dict1))
输出 {‘Tom’: 75, ‘Alice’: 80, ‘Bob’: 85, ‘Jerry’: 90}
#### 1.5.4 将列表转换为字典
keys = [‘name’, ‘age’, ‘gender’]
values = [‘Tom’, 18, ‘Male’]
dict1 = dict(zip(keys, values))
print(dict1)
输出 {‘name’: ‘Tom’, ‘age’: 18, ‘gender’: ‘Male’}
#### 1.5.5 使用字典实现一个简单的缓存
def fibonacci(n):
if n in cache:
return cache[n]
if n < 2:
result = n
else:
result = fibonacci(n - 1) + fibonacci(n - 2)
cache[n] = result
return result
### 1.6 字典的排序方法,升序以及降序
**对于字典的排序,可以使用内置的 sorted() 函数或 sorted() 方法来实现,也可以使用 collections.OrderedDict 类来保持排序顺序。**
下面分别介绍这些方法的升序和降序排序。
#### 1.6.1 使用内置函数 sorted() 进行排序
使用内置函数 sorted() 可以对字典进行排序。默认情况下,sorted() 按照字典中的键进行升序排序。可以使用 reverse=True 参数来实现降序排序。
升序排序
d = {‘b’: 2, ‘a’: 1, ‘c’: 3}
sorted_d = sorted(d.items())
print(sorted_d) # [(‘a’, 1), (‘b’, 2), (‘c’, 3)]
降序排序
sorted_d_desc = sorted(d.items(), reverse=True)
print(sorted_d_desc) # [(‘c’, 3), (‘b’, 2), (‘a’, 1)]
#### 1.6.2 使用字典的 sorted() 方法进行排序
使用字典的 sorted() 方法可以按照字典中的键或值进行排序。与 sorted() 函数一样,该方法默认按照字典中的键进行升序排序,并且可以使用 reverse=True 参数来实现降序排序。
升序排序
d = {‘b’: 2, ‘a’: 1, ‘c’: 3}
sorted_d = sorted(d.items())
print(sorted_d) # [(‘a’, 1), (‘b’, 2), (‘c’, 3)]
按值进行排序
sorted_d_value = sorted(d.items(), key=lambda x: x[1])
print(sorted_d_value) # [(‘a’, 1), (‘b’, 2), (‘c’, 3)]
降序排序
sorted_d_desc = sorted(d.items(), key=lambda x: x[0], reverse=True)
print(sorted_d_desc) # [(‘c’, 3), (‘b’, 2), (‘a’, 1)]
#### 1.6.3 使用 collections.OrderedDict 类进行排序
collections.OrderedDict 类可以保持字典中元素的插入顺序,并且支持排序功能。默认情况下,OrderedDict 按照字典中的键进行升序排序。可以使用 reverse=True 参数来实现降序排序。
from collections import OrderedDict
升序排序
d = {‘b’: 2, ‘a’: 1, ‘c’: 3}
sorted_d = OrderedDict(sorted(d.items()))
print(sorted_d) # OrderedDict([(‘a’, 1), (‘b’, 2), (‘c’, 3)])
按值进行排序
sorted_d_value = OrderedDict(sorted(d.items(), key=lambda x: x[1]))
print(sorted_d_value) # OrderedDict([(‘a’, 1), (‘b’, 2), (‘c’, 3)])
降序排序
sorted_d_desc = OrderedDict(sorted(d.items(), key=lambda x: x[0], reverse=True))
print(sorted_d_desc) # OrderedDict([(‘c’, 3), (‘b’, 2), (‘a’, 1)])
## 二.注意事项
1. 字典的键必须是可哈希的,也就是说,键必须是不可变的类型,比如数字、字符串、元组等,而列表和字典等可变类型是不可以作为键的。
2. 字典是无序的,如果需要有序的字典,可以使用collections模块中的OrderedDict类。
3. 在Python3中,keys()、values()、items()等方法返回的不再是列表类型,而是dict\_keys、dict\_values、dict\_items类型的对象,但是可以像列表一样使用。
![img](https://img-blog.csdnimg.cn/img_convert/b06d22798555e5003171e2e8fee9a51e.png)
![img](https://img-blog.csdnimg.cn/img_convert/e3c660015340d4fa2964e09f87b5f5f7.png)
**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**
**[需要这份系统化资料的朋友,可以戳这里获取](https://bbs.csdn.net/topics/618545628)**
**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**
链图片转存中...(img-bVuDY31l-1715719157808)]
**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**
**[需要这份系统化资料的朋友,可以戳这里获取](https://bbs.csdn.net/topics/618545628)**
**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**