【懒懒的Python学习笔记五】

在这一章中,你将学习到能够将信息关联起来的Python字典,将学习如何访问和修改字典中的信息,同时也会学习如何遍历字典中的数据。

一、一个简单的字典




新建了一个存储用户信息的字典,里面存储了用户姓名、年龄和电话信息,并依次打印这些信息。

二、使用字典

在Python中,字典是一些了的键-值对,每个键都有一个值与之相关联,你可以通过键来访问相关联的值,键可以字符串,数字,元组等不可变对象,但不可以是list、dict、set等对象。与键相关联的值可以是数字、字符串、列表乃至是字典,事实上可以将任何Python对象作为字典的值。

2.1 访问字典的值

要访问于键相关联的值,可依次指定字典名和放在方括号中的键,如下图:



2.2 添加键-值对

字典是一种动态结构,可随时根据需要添加键-值对,要添加键-值对,可依次指定字典名,用方括号括起来的键和对应的值。


首先我们创建了一个新的空的字典,然后依次添加‘name’,‘age’,‘tel’三个键-对,最后打印字典,结果如下:


我们发现最后打印的顺序和我们添加的顺序不同,实际上在Python中键-对的排列顺序和添加顺序无关,Python不关心键-对的添加顺序二只关心键-对的关联关系。

2.3 修改字典中的值

修改字典中的值和上面类似,指定字典名和键以及该键相对应的新值即可。




2.4 删除键-对

对于字典中不需要的信息,可使用del语句将对应的键-对删除,另外使用del语句删除的时候必须指定字典名和要删除的键。




三、遍历字典

一个Python字典有可能只包含几个键-对,也有可能包含成千上百的键-对,鉴于字典可能包含大量数据,Python支持对字典遍历并提供多种遍历方式,可遍历字典的所有键-对、键或值。

3.1 遍历所有的键-对


在上面的示例中,我们首先创建一个空字典,然后依次添加多个键-值对,然后编写一个for循环用于遍历字典,for循环中声明两个变量用于存储键-值对中的键和值,for语句的后半部包含字典名和方法items(),它返回一个键-值对列表,接下来for循环依次将每个键-值对存储到对应的变量中(注意变量的顺序,键在前值在后)。值得注意的是,即使在遍历字典时,键-值对的返回顺序和存储顺序不同。结果如下:


3.2 遍历所有键

在不需要使用字典的值得时候,方法keys()很有用,如下:




实际上,遍历字典时会默认遍历所有的键,因此将上面的代码修改成如下你会发现输出不变:




显示地使用方法keys()可以让代码更容易理解,但是你也可以选择忽略它。当然keys()并不只用于遍历,它返回一个列表,其中包含字典中的所有键。遍历键的同时可以选择按照顺序遍历字典中的键。


我们在for循环中对返回键的列表进行排序使返回列表的键按照字母顺序排列。


3.3 遍历字典中所有的值

如果感兴趣的是字典中的值,可使用方法方法values(),它返回一个值列表:




这种做法会提取字典中所以的值,但是没有考虑到是否重复,为剔除重复项,可以使用集合(set),集合(set)类似于列表,只不过每个元素都必须是独一无二的。




四、嵌套

有时候需要将一系列字典存储到列表中,或者将列表作为值存储在字典中,这种称为嵌套,你可以在列表中嵌套字典,也可以在字典中嵌套列表,甚至可以再字典里嵌套字典。

4.1 列表存储字典

字典user_1、user_2、user_3分别存储三个用户的信息,而列表user_info存储所以的用户的用户信息,最后我们遍历列表将每个用户信息打印出来。




任何对列表的操作对字典列表都是适用的,包括访问列表元素、增加删除列表元素,遍历列表元素等。

4.2 字典存储列表

有时候需要在字典中存储列表,比如水果店里可能会记录不同顾客喜欢哪些水果,这个时候可以在字典中存储列表了。




4.3 在字典冲存储字典

可以在字典中存储字典,但是这样做会使得代码复杂起来,比如某网站存储多个用户信息,每个用户有独特的用户ID,将ID作为键,将每个用户信息存储在一个字典里,就像下面一样:


首先我们定义一个用户字典,字典的键分别是‘aa22144’、‘kk14154’、'va1918'分别是用户ID,每个键的值是一个字典存储用户信息,每个字典分别存储了姓名、年龄、性别等信息。在大多数情况下,字典嵌套字典很容易出现错误,因此在能不使用字典嵌套字典的时候尽量不使用!

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值