python中字典和列表的相互嵌套问题详解
作者:Wanster 发布时间:2022-03-19 23:14:53
目录
1.列表中存储字典:
1.列表中存储多个字典
2.访问列表中字典的值
3.遍历访问多个值
2.字典中存储列表
1.访问字典中的列表元素
2.访问字典中的值(字典中的值为列表)
3.字典中存储字典
1.字典中不能全部由字典元素组成,会报错。
2.字典中的值可由字典组成
4.容易出的小错误:
总结
首先明确:
1.访问字典中的元素:dict_name[key] / dict_name.get(key)
2.访问列表中的元素:list_name[索引]
1.列表中存储字典:
1.列表中存储多个字典
p={'name':'lin','age':21}
y={'name':'xue','age':20}
c=[p,y]
print(c)
输出结果:
[{'name': 'Jonh', 'age': 18}, {'name': 'Marry', 'age': 19}]
2.访问列表中字典的值
print(f"person's name is {people[0].get('name')}")
print(f"{people[1].get('name')}'s age is {people[1].get('age')}")
#先用person[0/1]访问列表里的元素(字典),再用get方法访问字典里的值
输出结果:
person's name is Jonh
Marry's age is 19
3.遍历访问多个值
for person in people:
#将列表中的字典,依次赋值给person
print(f"{person['name']}'s age is {person['age']}")
#取出每个循环里变量person(字典)的键和值
输出结果:
Jonh's age is 18
Marry's age is 19
因为字典中有多个键值对,所以进行多层嵌套。
外层嵌套访问列表中的每个字典,内层嵌套访问每个字典元素的键值对。
for person in people:
#在每个遍历的字典里再进行嵌套(内层循环)
for k,v in person.items():
print(f"{k}:{v}")
输出结果:
name:Jonh
age:18
name:Marry
age:19name:Jonh
age:18
name:Marry
age:19
2.字典中存储列表
1.访问字典中的列表元素
先用list[索引]访问列表中的元素,用dict[key]方法访问字典中的值。
favourite_places={
'lin':['beijing','tianjin'],
'jing':['chengdu','leshan'],
'huang':['shenzhen']
}
#访问字典中的值可以用:dict_name[key]
print(favourite_places['lin'])
#访问列表里面的元素用索引:list_name[索引]
print(favourite_places['lin'][0].title())
输出结果:
['beijing', 'tianjin']
Beijing
循环访问字典中列表的元素,也是要用dict_name[key]先访问字典中的值(列表)
for i in favourite_places['lin']:
print(i.title())
输出结果:
Beijing
Tianjin
2.访问字典中的值(字典中的值为列表)
注意:直接访问字典中的值,会以列表的形式呈现。
for name,place in favourite_places.items():
print(f"{name.title()}'s favourite places are {place}")
输出结果:
Lin's favourite places are ['beijing', 'tianjin']
Jing's favourite places are ['chengdu', 'leshan']
Huang's favourite places are ['shenzhen']
为了避免,要进行循环嵌套
for names,places in favourite_places.items(): #对三个键值对先进行一个大循环
print(f'{names.title()} favourite places are:') #在大循环里每一组键值对开头先打印这句话
for place in places: #之后再对值进行一个小循环,打印出值中的每个元素
print(place.title())
输出结果:
Lin favourite places are:
Beijing
Tianjin
Jing favourite places are:
Chengdu
Leshan
Huang favourite places are:
Shenzhen
3.字典中存储字典
1.字典中不能全部由字典元素组成,会报错。
p={'name':'lin','age':21}
y={'name':'xue','age':20}
c={p,y}
print(c)
TypeError Traceback (most recent call last)
<ipython-input-46-4127ab9ea962> in <module>
1 p={'name':'lin','age':21}
2 y={'name':'xue','age':20}
----> 3 c={p,y}
4 print(c)TypeError: unhashable type: 'dict'
2.字典中的值可由字典组成
users={
'a':{'name':'lin','age':21},
'b':{'name':'xue','age':20}
}
print('-----------直接访问输出-------------------')
print(users['a']['name'],users['a']['age'])
print(users['b']['name'],users['b']['age'])
print('\n-----------循环嵌套的方法输出-------------------')
for username,userinfo in users.items():
print('\n'+username+':')
for name,age in userinfo.items():
print(name,age)
输出结果:
-----------直接访问输出-------------------
lin 21
xue 20-----------循环嵌套的方法输出-------------------
a:
name lin
age 21b:
name xue
age 20
4.容易出的小错误:
1.访问顺序: 可以用dict_name[key] / dict_name.get(key)
访问字典的值,也可以用列表索引list_name[索引]访问列表的值。但是要注意哪个在外,哪个在内,先访问外层,再访问内层,直接访问内层的会出错。
2.字典的值为列表,访问的结果是输出整个列表 需要嵌套循环遍历里面的键值对。
3.字典中不能全部由字典元素组成
总结
本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注脚本之家的更多内容!
来源:https://blog.csdn.net/Wanster/article/details/121319837


猜你喜欢
- 尽管数组在 Javascript 中是对象,但是不建议使用 for in 循环来遍历数组,实际上,有很多理由来阻止我们对数组使用 for i
- 目录支持多种类型的过滤避免多个范围查询优化排序理解索引概念最简单的方式是通过一个案例来进行,以下就是这样的一个案例。假设我们需要设计一个在线
- 生成器定义在Python中,一边循环一边计算的机制,称为生成器:generator。为什么要有生成器列表所有数据都在内存中,如果有海量数据的
- 方法一:def printTheReverseArray(self): list_1 = [1, 2, 3, 4, 5, 6, 7] l
- 安装python-alipay-sdkpip install python-alipay-sdk --upgrade配置视图函数orders
- 在pandas 基础操作大全之数据读取&清洗&分析 以及 pandas基础操作大全之数据合并 中介绍了p
- create proc sp_PublicTurnPageWebSite( @TBName nvarchar(
- 今天在做python获取邮件时需要递归调用解析函数才可以解析邮件内容,最后想要将解析出的内容返回时发现返回的是None 可以内容却可以打印出
- 本文实例为大家分享了js+css实现换肤效果的具体代码,供大家参考,具体内容如下效果图如下:需求:点击对应小圆点,下面内容颜色跟着改变主要思
- python读取npy文件时,太大不能完全显示,其解决方法当用python读取npy文件时,会遇到npy文件太大,用print函数打印时不能
- 适合各种浏览器的js拖动层,ie,firefox等,调用方便!<!DOCTYPE HTML PUBLIC "-//W3C//
- 目录1.celery异步消息队列介绍celery应用举例Celery有以下优点Celery 特性2.工作原理 *****Celery 扮演生
- 本文实例为大家分享了vue实现下拉菜单树的具体代码,供大家参考,具体内容如下效果:使用 Vue-Treeselect 实现建议通过npm安装
- 15分钟学会vue项目改造成SSRPs:网上看了好多服务器渲染的例子,基本都是从0开始的,用Nuxt或者vue官网推荐的ssr方案(vue-
- 这一块的内容很少, 异常使用try except即可, 日志只需要几行配置.使用装饰器捕获方法内的所有异常我使用装饰器来整个包裹一个方法,
- 我就废话不多说了,大家还是直接看代码吧!'''Created on 2018-4-4'''k
- 目前,各大搜索引擎如google、百度、雅虎已经对动态页面诸如asp,php有着不错的支持了,只要动态页面后面的参数不要太长,如控制在3个参
- MySQL基础知识第一期,如何远程访问MySQL数据库设置权限方法总结,讨论访问单个数据库,全部数据库,指定用户访问,设置访问密码,指定访问
- ASCII(str) 返回字符串str的第一个字符的ASCII值(str是空串时返回0)mysql> select ASCII(
- 大家知道,mailto是网页设计制作中的一个非常实用的html标签,许多拥有个人网页的朋友都喜欢在网站的醒目位置处写上自己的电子邮件地址,这