【零基础入门学习Python---Python的五大数据类型之字典类型】_字典中的键必须是唯一的,必须是不可变数据类型如字符串、数字或列表。

img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事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行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

  • 26
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值