字典 python,python里字典的基本用法(包括嵌套字典)
作为对象的集合,Python中的字典属于复合数据类型,类似于列表。本文将通过实例详细讲解如何使用Python中的字典,有兴趣的可以看看。
00-1010定义字典字典访问字典键和列表索引增量建立字典键限制字典值限制运算符和内置函数内置字典方法Python中的字典属于复合数据类型,因为它是对象的集合,类似于list。
目录
Dictionary是Python对数据结构的实现,通常称为关联数组。字典由一组键值对组成。每个键-值对将一个键映射到其关联的值。
您可以通过用大括号({})括起逗号分隔的键值对列表来定义字典。冒号(3360)将每个键与其关联的值分开。
d={
key:值,
key:值,
.
.
.
key:值
}
#定义团队
MLB团队={
.科罗拉多州 : 落基山脉,
.波士顿 : 红袜队,
.明尼苏达州 : 双胞胎,
.密尔沃基 : 酿酒商,
.西雅图:水手队
.}
可以使用内置的dict()函数来构建字典。
d=字典([
(键,值),
(键,值),
.
.
.
(键,值)
])
#定义团队
MLB团队=词典([
.(科罗拉多,落基山脉),
.(波士顿,红袜),
.(明尼苏达,双胞胎),
.(密尔沃基,酿酒人),
.(“西雅图”,“水手”)
.])
#另一种定义
MLB团队=字典(
.科罗拉多=落基山脉,
.波士顿=红袜队,
.明尼苏达=双胞胎,
.密尔沃基=酿酒人,
.西雅图=水手队
.)
字典内容的显示。
类型(MLB团队)
类别“字典”
MLB队
{ 科罗拉多 : 落基山脉,波士顿 : 红袜,明尼苏达 : 双胞胎,
密尔沃基 : 酿酒人,西雅图 : 水手 }
字典中的条目按定义的顺序显示,不能使用索引来指定访问元素。
MLB团队[1]
回溯(最近呼叫):
模块中文件“pyshell#13”的第1行
MLB团队[1]
KeyError: 1
定义字典
通过在方括号[]中指定相应的键,从字典中检索值。
MLB队[明尼苏达]
双胞胎的
MLB团队[科罗拉多州]
落基山脉
如果检索到的值不在字典中,则会引发异常。
>>>> MLB_team[Toronto]
Traceback (most recent call last):
File "<pyshell#19>", line 1, in <module>
MLB_team[Toronto]
KeyError: Toronto
现有字典添加数据只需分配新的键和值。
>>> MLB_team[Kansas City] = Royals>>> MLB_team
{Colorado: Rockies, Boston: Red Sox, Minnesota: Twins,
Milwaukee: Brewers, Seattle: Mariners, Kansas City: Royals}
更新数据,只需为现有键分配一个新值。
>>> MLB_team[Seattle] = Seahawks>>> MLB_team
{Colorado: Rockies, Boston: Red Sox, Minnesota: Twins,
Milwaukee: Brewers, Seattle: Seahawks, Kansas City: Royals}
删除数据,使用 del 指定要删除的键。
>>> del MLB_team[Seattle]>>> MLB_team
{Colorado: Rockies, Boston: Red Sox, Minnesota: Twins,
Milwaukee: Brewers, Kansas City: Royals}
字典键与列表索引
经常遇见的一些错误做法。
>>> MLB_team[Toronto]Traceback (most recent call last):
File "<pyshell#8>", line 1, in <module>
MLB_team[Toronto]
KeyError: Toronto
>>> MLB_team[1]
Traceback (most recent call last):
File "<pyshell#9>", line 1, in <module>
MLB_team[1]
KeyError: 1
# 数字作为键值使用
>>> d = {0: a, 1: b, 2: c, 3: d}
>>> d
{0: a, 1: b, 2: c, 3: d}
>>> d[0]
a
>>> d[2]
c
不能将字典视为列表。
>>> type(d)<class dict>
>>> d[-1]
Traceback (most recent call last):
File "<pyshell#30>", line 1, in <module>
d[-1]
KeyError: -1
>>> d[0:2]
Traceback (most recent call last):
File "<pyshell#31>", line 1, in <module>
d[0:2]
TypeError: unhashable type: slice
>>> d.append(e)
Traceback (most recent call last):
File "<pyshell#32>", line 1, in <module>
d.append(e)
AttributeError: dict object has no attribute append
增量构建字典
创建新的空字典,然后通过一次添加一个新的键和值构建。
>>> person = {}>>> type(person)
<class dict>
>>> person[fname] = Joe
>>> person[lname] = Fonebone
>>> person[age] = 51
>>> person[spouse] = Edna
>>> person[children] = [Ralph, Betty, Joey]
>>> person[pets] = {dog: Fido, cat: Sox}
# 创建和访问字典
>>> person
{fname: Joe, lname: Fonebone, age: 51, spouse: Edna,
children: [Ralph, Betty, Joey], pets: {dog: Fido, cat: Sox}}
>>> person[fname]
Joe
>>> person[age]
51
>>> person[children]
[Ralph, Betty, Joey]
# 检索字典数据
>>> person[children][-1]
Joey
>>> person[pets][cat]
Sox
构建的字典中数据类型没有明确的限制。
>>> foo = {42: aaa, 2.78: bbb, True: ccc}>>> foo
{42: aaa, 2.78: bbb, True: ccc}
>>> foo[42]
aaa
>>> foo[2.78]
bbb
>>> foo[True]
ccc
字典键的限制
几乎任何类型的值都可以用作 Python 中的字典键。
>>> foo = {42: aaa, 2.78: bbb, True: ccc}>>> foo
{42: aaa, 2.78: bbb, True: ccc}
# 可以使用类型和函数等内置对象
>>> d = {int: 1, float: 2, bool: 3}
>>> d
{<class int>: 1, <class float>: 2, <class bool>: 3}
>>> d[float]
2
>>> d = {bin: 1, hex: 2, oct: 3}
>>> d[oct]
3
同一字典内重复的键无法添加,如果添加则对原键的值进行替换。
>>> MLB_team = {... Colorado : Rockies,
... Boston : Red Sox,
... Minnesota: Twins,
... Milwaukee: Brewers,
... Seattle : Mariners
... }
>>> MLB_team[Minnesota] = Timberwolves
>>> MLB_team
{Colorado: Rockies, Boston: Red Sox, Minnesota: Timberwolves,
Milwaukee: Brewers, Seattle: Mariners}
元组也可以是字典键,因为元组是不可变的。
>>> d = {(1, 1): a, (1, 2): b, (2, 1): c, (2, 2): d}>>> d[(1,1)]
a
>>> d[(2,1)]
c
字典值的限制
字典的中的值是没有任何限制的。
>>> d = {0: a, 1: a, 2: a, 3: a}>>> d
{0: a, 1: a, 2: a, 3: a}
>>> d[0] == d[1] == d[2]
True
运算符和内置函数
in and not in运算符返回True or False。
>>> MLB_team = {... Colorado : Rockies,
... Boston : Red Sox,
... Minnesota: Twins,
... Milwaukee: Brewers,
... Seattle : Mariners
... }
>>> Milwaukee in MLB_team
True
>>> Toronto in MLB_team
False
>>> Toronto not in MLB_team
True
也可以与短路评估一起使用。
>>> MLB_team[Toronto]Traceback (most recent call last):
File "<pyshell#2>", line 1, in <module>
MLB_team[Toronto]
KeyError: Toronto
>>> Toronto in MLB_team and MLB_team[Toronto]
False
内置字典方法
与字符串和列表一样字典上也是有调用内置方法。
# d.clear() 清空字典数据>>> d = {a: 10, b: 20, c: 30}
>>> d
{a: 10, b: 20, c: 30}
>>> d.clear()
>>> d
{}
# d.get(<key>[, <default>]) 如果字典中存在键,则返回该键的值
>>> d = {a: 10, b: 20, c: 30}
>>> print(d.get(b))
20
>>> print(d.get(z))
None
# <key>未找到并且<default>指定了可选参数
>>> print(d.get(z, -1))
-1
# d.items() 返回字典中的键值对列表
>>> d = {a: 10, b: 20, c: 30}
>>> d
{a: 10, b: 20, c: 30}
>>> list(d.items())
[(a, 10), (b, 20), (c, 30)]
>>> list(d.items())[1][0]
b
>>> list(d.items())[1][1]
20
# d.keys() 返回字典中的键列表
>>> d = {a: 10, b: 20, c: 30}
>>> d
{a: 10, b: 20, c: 30}
>>> list(d.keys())
[a, b, c]
# d.values() 返回字典中的值列表
>>> d = {a: 10, b: 20, c: 30}
>>> d
{a: 10, b: 20, c: 30}
>>> list(d.values())
[10, 20, 30]
# d.pop(<key>[, <default>]) 从字典中删除一个键,如果存在并返回它的值
>>> d = {a: 10, b: 20, c: 30}
>>> d.pop(b)
20
>>> d
{a: 10, c: 30}
# 如果不存在则引发异常
>>> d = {a: 10, b: 20, c: 30}
>>> d.pop(z)
Traceback (most recent call last):
File "<pyshell#4>", line 1, in <module>
d.pop(z)
KeyError: z
# 如果指定默认参数<default>则返回该值
>>> d = {a: 10, b: 20, c: 30}
>>> d.pop(z, -1)
-1
>>> d
{a: 10, b: 20, c: 30}
# d.popitem() 从字典中删除键值对
>>> d = {a: 10, b: 20, c: 30}
>>> d.popitem()
(c, 30)
>>> d
{a: 10, b: 20}
>>> d.popitem()
(b, 20)
>>> d
{a: 10}
# d为空会引发异常
>>> d = {}
>>> d.popitem()
Traceback (most recent call last):
File "<pyshell#11>", line 1, in <module>
d.popitem()
KeyError: popitem(): dictionary is empty
# d.update(<obj>) 将字典与另一个字典或可迭代的键值对合并
# (被替换键值).update(替换键值)
>>> d1 = {a: 10, b: 20, c: 30}
>>> d2 = {b: 200, d: 400}
>>> d1.update(d2)
>>> d1
{a: 10, b: 200, c: 30, d: 400}
# 使用元组更新
>>> d1 = {a: 10, b: 20, c: 30}
>>> d1.update([(b, 200), (d, 400)])
>>> d1
{a: 10, b: 200, c: 30, d: 400}
# 指定关键字参数
>>> d1 = {a: 10, b: 20, c: 30}
>>> d1.update(b=200, d=400)
>>> d1
{a: 10, b: 200, c: 30, d: 400}
到此这篇关于Python必备技巧之字典(Dictionary)详解的文章就介绍到这了,更多相关Python 字典内容请搜索盛行IT软件开发工作室以前的文章或继续浏览下面的相关文章希望大家以后多多支持盛行IT软件开发工作室!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。