python字典是一种数据结构,类似于其他编程语言中的关联数组。数组或列表按位置索引元素。另一方面,字典通过可以是字符串的键来索引元素。可以将字典视为无序的键值对集。
在本文中,我们将向您介绍如何使用python字典。
有几种方法可以创建python字典。最简单的方法是使用大括号初始化,语法类似于JSON。
users = {'firstname': 'John', 'lastname': 'Smith', 'age': 27}你也可以用数字作为钥匙。但是,要小心使用浮点数作为键,因为计算机将它们存储为近似值。
rain_percent = { 1980: '17%', 1981: '15%', 1982: '10%'}print rain_percentprint rain_percent[1980]# prints{1980: '17%', 1981: '15%', 1982: '10%'}17%还可以使用名称-值对作为dict()构造函数的关键字参数来创建和初始化字典。
population = dict(California=37253956, Colorado=5029196, Connecticut=3574097, Delaware=897934)print population# prints{'Connecticut': 3574097, 'Delaware': 897934, 'California': 37253956, 'Colorado': 5029196}创建字典的另一种方法是使用键值元组数组。这里是与上面相同的例子。
pairs = [('California', 37253956), ('Colorado', 5029196), ('Connecticut', 3574097), ('Delaware', 897934)]population = dict(pairs)print population# prints{'Connecticut': 3574097, 'Delaware': 897934, 'California': 37253956, 'Colorado': 5029196}Dict comprehension提供了一种很酷的语法来初始化Dict,如果您可以基于键计算值的话。下面初始化一系列数字的dict和平方值。
print {x: x**2 for x in xrange(10, 20)}# prints{10: 100, 11: 121, 12: 144, 13: 169, 14: 196, 15: 225, 16: 256, 17: 289, 18: 324, 19: 361}它是如何工作的?后一部分(对于xrange(10,20)中的x)返回指定范围内的数字范围。dict理解部分({x:x**2..})在这个范围内循环并初始化字典。
一旦你创建了字典,你能用它做什么?你可以访问元素,更新值,删除元素等等。
使用括号中的键访问dict的元素,就像访问数组或列表一样。
print population['Delaware']# prints897934如果键是数字,则不需要引号。然后,表达式看起来像一个列表或数组索引。
print rain_percent[1980]# prints17%访问密钥时密钥的类型必须与Python字典中存储的内容匹配。由于存储的密钥是数字,而访问密钥是字符串,因此以下情况会导致错误。
x = '1980'print rain_percent[x]# results in 1 x = '1980'----> 2 print rain_percent[x]KeyError: '1980'访问不存在的密钥是一个错误。
rain_percent = { 1980: '17%', 1981: '15%', 1982: '10%'}print rain_percent[1983]# prints 1 rain_percent = { 1980: '17%', 1981: '15%', 1982: '10%'}----> 2 print rain_percent[1983]KeyError: 1983要访问键并在映射不存在时提供默认值,请使用get()方法,并将默认值用作第二个参数。
print rain_percent.get(1985, '0%')# prints0%如果您想检查一个密钥的存在而不实际尝试访问它(并且可能遇到如上所述的密钥错误),该怎么办?您可以在返回布尔值的dct格式key中使用in关键字。
print 1980 in rain_percentprint '1980' in rain_percent# printsTrueFalse使用格式key not in dct反转条件(即确保该键不在Python字典中)。这相当于标准的python否定,而不是dct中的key。
print 1980 not in rain_percentprint 1985 not in rain_percent# printsFalseTrue通过指定给所需的键来更改值。
users = {'firstname': 'John', 'lastname': 'Smith', 'age': 27}users['age'] = 29print users# prints{'lastname': 'Smith', 'age': 29, 'firstname': 'John'}使用相同的语法向Python字典添加新映射。
users['dob'] = '15-sep-1971'print users# prints{'dob': '15-sep-1971', 'lastname': 'Smith', 'age': 29, 'firstname': 'John'}使用Update()方法一次性更新字典的多个元素。
users = {'firstname': 'John', 'lastname': 'Smith', 'age': 27}users.update({'age': 29, 'dob': '15-sep-1971'})print users# prints{'dob': '15-sep-1971', 'lastname': 'Smith', 'age': 29, 'firstname': 'John'}使用setdefault()为键设置默认值。如果映射不存在,则此方法设置键的值。它返回当前值。
# does not change current valueprint users.setdefault('firstname', 'Jane')# printsJohn# sets valueprint users.setdefault('city', 'NY')# printsNY# Final valueprint users# prints{'lastname': 'Smith', 'age': 27, 'firstname': 'John', 'city': 'NY'}使用del运算符删除字典中的映射。此运算符不返回任何内容。
如果字典中不存在密钥,则会遇到密钥错误。
users = {'firstname': 'John', 'lastname': 'Smith', 'age': 27}del users['age']print users# prints{'lastname': 'Smith', 'firstname': 'John'}当您希望返回已删除的值时,请改用pop()方法。
users = {'firstname': 'John', 'lastname': 'Smith', 'age': 27}print users.pop('age')print users# prints27{'lastname': 'Smith', 'firstname': 'John'}如果你想删除一个键,如果它存在,而不造成错误,如果它没有呢?可以使用pop()并为第二个参数指定None,如下所示:
users = {'firstname': 'John', 'lastname': 'Smith', 'age': 27}users.pop('foo', None)print users# prints{'lastname': 'Smith', 'age': 27, 'firstname': 'John'}这里有一个从字典中删除一串键的单行程序,不会对不存在的键造成错误。
users = {'firstname': 'John', 'lastname': 'Smith', 'age': 27, 'dob': '15-sep-1971'}map(lambda x : users.pop(x, None),['age', 'foo', 'dob'])print users要从字典中删除所有键吗?使用clear()方法。
users = {'firstname': 'John', 'lastname': 'Smith', 'age': 27}users.clear()print users# prints{}Python提供了许多方法来循环字典的条目。挑一个适合你的需要。
以下方法描述以数组形式提取各种Python字典信息。生成的数组可以使用普通的python构造进行循环。但是,请记住,根据字典的大小,返回的数组可能很大。因此,处理这些数组可能比使用上面的迭代器方法更昂贵(内存方面)。
使用这些数组是可以接受的一种情况是,当遇到不需要的元素时,需要从字典中删除项。修改字典时使用迭代器可能会导致运行时错误。
在本文中,我们尝试介绍python字典最常见的用例。请务必查看我们的所有其他Python文章,以获得更多Python技巧。如果您有其他用例,您觉得应该包括在内,请在下面的评论中告诉我们!
图片来源:viper345/Shutterstock
关键区别——php与python PHP和Python是两种流行的编程语言。PHP和Python的关键区别在于PHP专门用于web开发,而Python则用于web开发并作为一种通用编程语言。 PHP是一种为web开发而设计的服务器端脚本语言。Python是一种用于通用编程...
您想提高Python技能吗?然后,您可以尝试使用Python在计算机上执行一些任务。使用Python将文件从一个目录复制和粘贴到另一个目录是一种有趣的方法。 ...
在Python中及时使用列表理解可以使迭代列表操作变得容易。除了一行之外,它的可读性更高,执行效率也更高。 ...
...言相比:JavaScript有1604k的pull请求,Java有763k的pull请求,Python有744个pull请求。Ruby、PHP、C++和CSS也击败了C. ...
如果您正在考虑学习Python,那么您可能会被初始设置过程弄得不知所措。您需要在系统上安装Python,然后学习如何使用命令行处理代码,或者学习如何使用交互式shell,或者学习如何设置pythonide。 ...
... 在统一的早期,可以选择使用Boo——一种类似Python的语言。这也许并不奇怪,因为布的设计师罗德里戈德奥利维拉(rodrigob.deoliveira)为Unity工作。该语言与.NET和Mono兼容,完全可以通过游戏引擎实现。出什么事了? ...
Click是一个用于编写命令行接口的Python包。它为您生成了漂亮的文档,并允许您用一行代码构建命令行界面。简而言之:它非常棒,可以帮助你的程序更上一层楼。 ...
您可能听说过Python的列表理解。也许这甚至是你在没有真正理解的情况下使用的东西。现在是学习的时候了,因为我们将介绍有关Python中列表理解的所有知识。 ...
...决定学习一种新的编程语言,你做了一些研究,你想知道Python是否适合你?或者您已经决定学习Python,但不确定如何开始? ...