人生苦短,我学Python(三)


4.1 字典

4.1.1 字典简介

我们在程序编写的过程当中,很有可能会使用不同的数据之间的对应关系,比如一系列单词对应的翻译信息、一系列任命对应的联系方式等,字典能够让我们的程序中数据元素之间的关系变得更加符合我们的需求,而不是自己创建对应关系。
下面为最基本的字典用法:

player = {"name":"messi", "team":"barcelona"}
print(player["name"])
print(player["team"])
messi
barcelona

不难发现,在字典当中,我们想要知道某个元素的值时,不再使用传统的数字索引作为我们的查找标准,而是通过两个元素间建立的关系进行查找。

我们将我们查询时所用的索引称为键(key),而每个key对应的叫做值(value)

我们在使用字典时,也可以直接将某个值赋给某一变量,方便使用。

在建立字典后,我们也可以对字典内容进行添加,删除,修改等操作,具体使用方法如下:

player = {"name":"messi", "team":"barcelona"}
#添加元素
player["age"] = 32
print(player)
#修改元素
player["name"] = "suarez"
print(player)
#删除元素
del player["age"]
print(player)
{'name': 'messi', 'team': 'barcelona', 'age': 32}
{'name': 'suarez', 'team': 'barcelona', 'age': 32}
{'name': 'suarez', 'team': 'barcelona'}

当我们在创建一个数据量比较大的字典时,我们需要在格式上进行一定的调整,以保证我们代码的工整性和可读性。
我们可以利用换行和缩进来保证我们的代码工整。

player_team = {
    "messi":"barcelona",
    "neymar":"paris",
    "tanlong":"changchunyt"
}
print(player_team)
{'messi': 'barcelona', 'neymar': 'paris', 'tanlong': 'changchunyt'}

4.1.2 字典的遍历

在我们的日常使用需求当中,我们对这种元素的集合一个极其重要的操作就是对他们的遍历,在字典当中,我们对字典遍历的原理和之前我们曾经接触过的对列表和元组的遍历原理是相同的,我们一般使用for循环对字典进行遍历(p.s.也有很多其他的方法可以完成遍历操作,但是我所接触到的最基础的遍历一般是使用for循环完成的),但是在字典当中也有和前两者稍有不同的地方,在字典当中,我们所规定的是两个元素之间的对应关系,所以在字典当中的元素是二维的,或者说,我们遍历的每一个单位对应的是两个元素(键key和值value),我们可以按我们的需要来对遍历结果进行进一步的操作。
对字典的基础遍历方法如下:

player_team = {
    "messi":"barcelona",
    "neymar":"paris",
    "tanlong":"changchunyt"
}

for key,value in player_team.items():
    print(key+":"+value)
messi:barcelona
neymar:paris
tanlong:changchunyt

上述的例子是对字典中的键和值都进行遍历,但在有些时候,我们只需要遍历键或只需要遍历值,这个时候我们就可以用到方法keys()或values().

player_team = {
    "messi":"barcelona",
    "neymar":"paris",
    "tanlong":"changchunyt"
}
for name in player_team.keys():
    print(name)
for team in player_team.values():
    print(team)
messi
neymar
tanlong
barcelona
paris
changchunyt

在对字典进行相关的操作时,我们还可以使用很多的方法来方便我们对数据元素进行我们所需的操作,比如我们可以对元素进行字典序排序(sorted),或者我们可以对重复的元素进行去重(set).

player_team = {
    "messi":"barcelona",
    "neymar":"paris",
    "tanlong":"changchunyt",
    "duzhenyu":"changchunyt"
}
for name in sorted(player_team.keys()):
    print(name)

for team in sorted(set(player_team.values())):
    print(team)
duzhenyu
messi
neymar
tanlong
barcelona
changchunyt
paris

我们在这里只是列举了更加容易被接受的例子,并没有什么实际的意义,但是在实际的日常使用当中,我们可以通过这样的操作,方便我们对数据进行处理,并且python为我们提供的很多内置功能会大大提高我们的效率。

4.2.1 嵌套

我们在使用字典时,有时我们的数据元素可能不是单一的数值或者单一的元素,这个时候我们就会用到嵌套的功能,在我们的不同需求之下,我们可以在字典当中嵌套列表,在列表当中嵌套字典,甚至我们可以在字典当中嵌套字典,这样的嵌套方法可以完成更多强大的操作。
具体使用方法如下:

player1 = {"name":"messi","team":"barcelona"}
player2 = {"name":"neymar","team":"paris"}
player3 = {"name":"tanlong","team":"changchun"}
players = [player1, player2, player3]
for p in players:
    print(p)
{'name': 'messi', 'team': 'barcelona'}
{'name': 'neymar', 'team': 'paris'}
{'name': 'tanlong', 'team': 'changchun'}

在我们日常的使用当中,有时我们可能需要随机生成一些数据元素,我们就需要借助类似的方法进行操作:

import random
player = []
for num in range(10):
    new_player = {"att":random.randint(1,10),"def":random.randint(1,10)}
    player.append(new_player)
print(player[:5])
print(len(player))
[{'att': 4, 'def': 2}, {'att': 8, 'def': 9}, {'att': 6, 'def': 5}, {'att': 8, 'def': 1}, {'att': 4, 'def': 7}]
10

上述的例子是将字典嵌套进列表当中,而在我们的日常使用当中,有时可能也需要将列表嵌套进字典当中。
比如在我们的社交平台当中,我们可能会被标记为某些兴趣标签,这样的结构就很适合进行列表嵌套进字典当中。

id = {
    '00':['football','sport'],
    '01':['music','cook'],
    '02':['idol','movie'],
    '03':['IT','game']
}

for k,v in id.items():
    print(k+"'s label:")
    for l in v:
        print("\t"+l)
00's label:
	football
	sport
01's label:
	music
	cook
02's label:
	idol
	movie
03's label:
	IT
	game

同理,我们有时会用到字典嵌套字典的情况,这时我们的实现原理和其他嵌套的原理是类似的:

player = {
    'messi':{
        'age':32,
        'pos':'RW'
    },
    'tanlong':{
        'age':31,
        'pos':"ST"
    }
}

for pl,pl_i in player.items():
    print(pl+' ,age:'+str(pl_i['age'])+', pos:'+pl_i['pos'])
messi ,age:32, pos:RW
tanlong ,age:31, pos:ST

本文所在系列:Python编程学习笔记

Python编程学习笔记(一):数据类型;列表基础;函数、方法、语句辨析;
Python编程学习笔记(二):列表操作;判断语句(if);
Python编程学习笔记(三):字典;


写在文末的话

最近在忙些别的事情,但是发现总浏览量过1000了,虽然我自己的学习笔记可能给大家的帮助不大,但是浏览量还是给了我写博客的动力。
本文的讲解忽略了一些比较基础的名词的解释,如果有问题或发现错误可以回复或私信博主,讲述的顺序主要是参照了图灵图书系列的《Python编程:从入门到实践》,推荐大家购买正版的纸质或电子版书籍。
转载请注明出处。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值