掌握Python字典的12个例子

人工智能遇见磐创 2020-11-15 19:17:45
Python 字典 掌握 例子 个例


作者|Soner Yıldırım
编译|VK
来源|Towards Data Science

数据结构是任何编程语言的关键部分。为了创建健壮且性能良好的产品,必须非常了解数据结构。

在这篇文章中,我们将研究Python编程语言的一个重要数据结构,即字典。

字典是键值对的无序集合。每个项都有一个键和值。字典可以看作是一个有特殊索引的列表。

键必须是唯一的和不可变的。我们可以使用字符串、数字(int或float)或元组作为键。值可以是任何类型。

考虑一个我们需要存储学生成绩的案例。我们可以把它们存储在字典或列表中。

使用字典可以让我们通过提供学生姓名(key)来获取每个学生的成绩。另一方面,为了能够获得某个学生的成绩,我们需要一个额外的列表。

新的列表包含学生的姓名,并且与成绩列表的顺序完全相同。

因此,对于这种情况,字典比列表更好。

在简短的介绍之后,让我们从示例开始深入研究字典。这些例子将涵盖字典的特性,以及对它们进行操作的函数和方法。

1.创建字典

我们可以通过在大括号之间提供0个或多个键值对来创建字典。

empty_dict = {}
grades = {'John':'A', 'Emily':'A+', 'Betty':'B', 'Mike':'C', 'Ashley':'A'}
grades
{'Ashley': 'A', 'Betty': 'B', 'Emily': 'A+', 'John': 'A', 'Mike': 'C'}

2.访问值

我们通过提供索引来访问列表中的值。类似地,在字典中,通过使用键来访问值。

grades['John']
'A'
grades.get('Betty')
'B'

3.访问所有值或所有键

keys方法用于获取所有键。

grades.keys()
dict_keys(['John', 'Emily', 'Betty', 'Mike', 'Ashley'])

返回对象是dict_keys对象,它是iterable类型。因此,我们可以在for循环中迭代它。

类似地,values方法返回所有值。

grades.values()
dict_values(['A', 'A+', 'B', 'C', 'A'])

我们不能对dict_keys 或dict_values进行索引操作,但我们可以将它们转换为一个列表,然后使用索引。

list(grades.values())[0]
'A'

items方法返回键值对。

grades.items()
dict_items([('John', 'A'), ('Emily', 'A+'), ('Betty', 'B'), ('Mike', 'C'), ('Ashley', 'A')])

4.更新或添加项

字典是可变的,所以我们可以更新、添加或删除条目。更新或添加项的语法是相同的。如果字典中存在给定的键,则更新现有项的值。否则,将创建一个新项(即键值对)。

grades['Edward'] = 'B+'
grades['John'] = 'B'
grades
{'Ashley': 'A',
'Betty': 'B',
'Edward': 'B+',
'Emily': 'A+',
'John': 'B',
'Mike': 'C'}

5.使用新字典更新

我们也可以将字典传递给update函数。字典将根据新字典中的项进行更新。举个例子会更清楚。

考虑以下字典:

grades = {'John':'A', 'Emily':'A+', 'Betty':'B', 'Mike':'C'}
grades_new = {'John':'B', 'Sam':'A', 'Betty':'A'}

如果我们根据grades_new更新grades ,John和Betty的值也会更新。此外,还将添加新项('Sam':'a')。

grades.update(grades_new)
grades
{'Betty': 'A', 'Emily': 'A+', 'John': 'B', 'Mike': 'C', 'Sam': 'A'}

6.删除项

我们可以使用del或pop函数删除项。我们只传递要删除的项的键。

del(grades['Edward'])
grades.pop('Ashley')
'A'
grades
'Betty': 'B', 'Emily': 'A+', 'John': 'B', 'Mike': 'C'}

与del函数不同,pop函数返回已删除项的值。因此,我们可以选择将其分配给一个变量。

7.字典作为iterable

我们可以迭代字典。默认情况下,迭代基于键。

for i in grades:
print(i)
John
Emily
Betty
Mike

我们也可以对值进行迭代(grades.values()grades.items()).

8.字典生成式

它类似于列表生成式。字典生成式是一种基于iterables的字典创建方法。

{x: x**2 for x in range(5)}
{0: 0, 1: 1, 2: 4, 3: 9, 4: 16}
{word: len(word) for word in ['data','science','is','awesome']}
{'awesome': 7, 'data': 4, 'is': 2, 'science': 7}

iterable中的元素成为字典的键。这些值是根据字典生成式中的赋值确定的。

9.从列表创建字典

我们可以使用列表或元组列表创建字典。

a = [['A',4], ['B',5], ['C',11]]
dict(a)
{'A': 4, 'B': 5, 'C': 11}
b = [('A',4), ('B',5), ('C',11)]
dict(b)
{'A': 4, 'B': 5, 'C': 11}

10.从字典到数据帧

Pandas的dataframe函数可用于使用字典创建数据帧。键变成列名,值变成行。

到目前为止,我们已经用值为字符串的字典做了一些示例。但是,字典中的值可以是任何类型,例如列表、numpy数组、其他字典等等。

在从字典创建数据帧的情况下,值由数组组成(例如list、numpy array)。

import numpy as np
import pandas as pd
dict_a = {'names':['Amber','John','Edward','Emily'],
'points':np.random.randint(100, size=4)}
df = pd.DataFrame(dict_a)
df

11.len和clear

len函数返回字典中的项数(即长度)。clear方法用于删除字典中的所有项,因此我们将得到一个空字典。

len(grades)
4
grades.clear()
len(grades)
0

12.复制字典

grades = {'John':'A', 'Emily':'A+', 'Betty':'B'}
dict1 = grades
dict2 = grades.copy()
dict3 = dict(grades)

所有dict1、dict2和dict3都包含与分数完全相同的键值对。然而,dict1只是一个指向grades的指针。因此,grades的任何变化也会改变dict1。

dict2和dict3是内存中独立的对象,因此它们不会受到grades变化的影响。

我们需要特别注意我们如何复制字典。

好处:使用python3.9合并和更新操作符

Python3.9为字典提供了merge(“|”)和update(“|=”)运算符。我还没有安装Python 3.9,所以我将使用Python文档中的示例:

>>> x = {"key1": "value1 from x", "key2": "value2 from x"}
>>> y = {"key2": "value2 from y", "key3": "value3 from y"}
>>> x | y
{'key1': 'value1 from x', 'key2': 'value2 from y', 'key3': 'value3 from y'}
>>> y | x
{'key2': 'value2 from x', 'key3': 'value3 from y', 'key1': 'value1 from x'}

字典是Python中非常重要的数据结构,在许多情况下都会用到。我们在这篇文章中所做的例子将涵盖你需要了解的字典的大部分内容。

然而,当然还有更多技巧。和其他技能一样,熟能生巧,你会在不断练习中掌握。

原文链接:https://towardsdatascience.co...

欢迎关注磐创AI博客站:
http://panchuang.net/

sklearn机器学习中文官方文档:
http://sklearn123.com/

欢迎关注磐创博客资源汇总站:
http://docs.panchuang.net/

版权声明
本文为[人工智能遇见磐创]所创,转载请带上原文链接,感谢
https://segmentfault.com/a/1190000038175962

  1. 利用Python爬虫获取招聘网站职位信息
  2. Using Python crawler to obtain job information of recruitment website
  3. Several highly rated Python libraries arrow, jsonpath, psutil and tenacity are recommended
  4. Python装饰器
  5. Python实现LDAP认证
  6. Python decorator
  7. Implementing LDAP authentication with Python
  8. Vscode configures Python development environment!
  9. In Python, how dare you say you can't log module? ️
  10. 我收藏的有关Python的电子书和资料
  11. python 中 lambda的一些tips
  12. python中字典的一些tips
  13. python 用生成器生成斐波那契数列
  14. python脚本转pyc踩了个坑。。。
  15. My collection of e-books and materials about Python
  16. Some tips of lambda in Python
  17. Some tips of dictionary in Python
  18. Using Python generator to generate Fibonacci sequence
  19. The conversion of Python script to PyC stepped on a pit...
  20. Python游戏开发,pygame模块,Python实现扫雷小游戏
  21. Python game development, pyGame module, python implementation of minesweeping games
  22. Python实用工具,email模块,Python实现邮件远程控制自己电脑
  23. Python utility, email module, python realizes mail remote control of its own computer
  24. 毫无头绪的自学Python,你可能连门槛都摸不到!【最佳学习路线】
  25. Python读取二进制文件代码方法解析
  26. Python字典的实现原理
  27. Without a clue, you may not even touch the threshold【 Best learning route]
  28. Parsing method of Python reading binary file code
  29. Implementation principle of Python dictionary
  30. You must know the function of pandas to parse JSON data - JSON_ normalize()
  31. Python实用案例,私人定制,Python自动化生成爱豆专属2021日历
  32. Python practical case, private customization, python automatic generation of Adu exclusive 2021 calendar
  33. 《Python实例》震惊了,用Python这么简单实现了聊天系统的脏话,广告检测
  34. "Python instance" was shocked and realized the dirty words and advertisement detection of the chat system in Python
  35. Convolutional neural network processing sequence for Python deep learning
  36. Python data structure and algorithm (1) -- enum type enum
  37. 超全大厂算法岗百问百答(推荐系统/机器学习/深度学习/C++/Spark/python)
  38. 【Python进阶】你真的明白NumPy中的ndarray吗?
  39. All questions and answers for algorithm posts of super large factories (recommended system / machine learning / deep learning / C + + / spark / Python)
  40. [advanced Python] do you really understand ndarray in numpy?
  41. 【Python进阶】Python进阶专栏栏主自述:不忘初心,砥砺前行
  42. [advanced Python] Python advanced column main readme: never forget the original intention and forge ahead
  43. python垃圾回收和缓存管理
  44. java调用Python程序
  45. java调用Python程序
  46. Python常用函数有哪些?Python基础入门课程
  47. Python garbage collection and cache management
  48. Java calling Python program
  49. Java calling Python program
  50. What functions are commonly used in Python? Introduction to Python Basics
  51. Python basic knowledge
  52. Anaconda5.2 安装 Python 库(MySQLdb)的方法
  53. Python实现对脑电数据情绪分析
  54. Anaconda 5.2 method of installing Python Library (mysqldb)
  55. Python implements emotion analysis of EEG data
  56. Master some advanced usage of Python in 30 seconds, which makes others envy it
  57. python爬取百度图片并对图片做一系列处理
  58. Python crawls Baidu pictures and does a series of processing on them
  59. python链接mysql数据库
  60. Python link MySQL database