前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python中字典和列表的相互嵌套问题

Python中字典和列表的相互嵌套问题

作者头像
润森
发布2022-08-18 10:38:12
6K0
发布2022-08-18 10:38:12
举报
文章被收录于专栏:毛利学Python毛利学Python

在学习过程中遇到了很多小麻烦,所以将字典列表的循环嵌套问题,进行了个浅浅的总结分类。

  1. 列表中存储字典
  2. 字典中存储列表
  3. 字典中存储字典
  4. 易错点

首先明确:

①访问字典中的元素:dict_name[key] / dict_name.get(key)

②访问列表中的元素:list_name[索引]

  1. 1.列表中存储字典:
  • ①列表中存储多个字典
代码语言:javascript
复制
p={'name':'lin','age':21}

y={'name':'xue','age':20}

c=[p,y]

print(c)
 

输出结果:

代码语言:javascript
复制
[{'name': 'Jonh', 'age': 18}, {'name': 'Marry', 'age': 19}]

②访问列表中字典的值

输出结果:

代码语言:javascript
复制
person's name is Jonh
Marry's age is 19
  1. print(f"person's name is {people[0].get('name')}")
  2. print(f"{people[1].get('name')}'s age is {people[1].get('age')}")
  3. #先用person[0/1]访问列表里的元素(字典),再用get方法访问字典里的值

③遍历访问多个值

代码语言:javascript
复制
for person in people:

#将列表中的字典,依次赋值给person

print(f"{person['name']}'s age is {person['age']}")

#取出每个循环里变量person(字典)的键和值

输出结果:

代码语言:javascript
复制
Jonh's age is 18
Marry's age is 19

因为字典中有多个键值对,所以进行多层嵌套。

外层嵌套访问列表中的每个字典,内层嵌套访问每个字典元素的键值对。

代码语言:javascript
复制
for person in people:

#在每个遍历的字典里再进行嵌套(内层循环)

for k,v in person.items():

print(f"{k}:{v}")

输出结果:

代码语言:javascript
复制
name:Jonh
age:18
name:Marry
age:19

2.字典中存储列表

①访问字典中的列表元素

先用list[索引]访问列表中的元素,用dict[key]方法访问字典中的值。

代码语言:javascript
复制
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())

输出结果:

代码语言:javascript
复制
['beijing', 'tianjin']
Beijing

循环访问字典中列表的元素,也是要用dict_name[key]先访问字典中的值(列表)

代码语言:javascript
复制
for i in favourite_places['lin']:

print(i.title())

输出结果:

代码语言:javascript
复制
Beijing
Tianjin

②访问字典中的值(字典中的值为列表)

注意:直接访问字典中的值,会以列表的形式呈现。

代码语言:javascript
复制
for name,place in favourite_places.items():

print(f"{name.title()}'s favourite places are {place}")

输出结果:

代码语言:javascript
复制
Lin's favourite places are ['beijing', 'tianjin']
Jing's favourite places are ['chengdu', 'leshan']
Huang's favourite places are ['shenzhen']

为了避免,要进行循环嵌套

代码语言:javascript
复制
for names,places in favourite_places.items():  #对三个键值对先进行一个大循环

print(f'{names.title()} favourite places are:') #在大循环里每一组键值对开头先打印这句话

for place in places:      #之后再对值进行一个小循环,打印出值中的每个元素

print(place.title())

输出结果:

代码语言:javascript
复制
Lin favourite places are:
Beijing
Tianjin
Jing favourite places are:
Chengdu
Leshan
Huang favourite places are:
Shenzhen

3.字典中存储字典

①字典中不能全部由字典元素组成,会报错。

代码语言:javascript
复制
p={'name':'lin','age':21}

y={'name':'xue','age':20}

c={p,y}

print(c)
代码语言:javascript
复制
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'

②字典中的值可由字典组成

代码语言:javascript
复制
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)

输出结果:

代码语言:javascript
复制
-----------直接访问输出-------------------
lin 21
xue 20
-----------循环嵌套的方法输出-------------------
a:
name lin
age 21
b:
name xue
age 20

4.容易出的小错误:

①访问顺序:

可以用dict_name[key] / dict_name.get(key)访问字典的值,也可以用列表索引list_name[索引]访问列表的值。但是要注意哪个在外,哪个在内,先访问外层,再访问内层,直接访问内层的会出错。

②字典的值为列表,访问的结果是输出整个列表

需要嵌套循环遍历里面的键值对。

③字典中不能全部由字典元素组成

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-11-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 小刘IT教程 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • ②访问列表中字典的值
  • ③遍历访问多个值
  • 2.字典中存储列表
    • ①访问字典中的列表元素
      • ②访问字典中的值(字典中的值为列表)
      • 3.字典中存储字典
        • ①字典中不能全部由字典元素组成,会报错。
          • ②字典中的值可由字典组成
          • 4.容易出的小错误:
            • ①访问顺序:
              • ②字典的值为列表,访问的结果是输出整个列表
                • ③字典中不能全部由字典元素组成
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档