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

2 篇文章 2 订阅

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

①访问字典中的元素：dict_name[key]  /  dict_name.get(key)
②访问列表中的元素：list_name[索引]
1. ## 1.列表中存储字典：

• #### ①列表中存储多个字典

p={'name':'lin','age':21}
y={'name':'xue','age':20}
c=[p,y]
print(c)
1. 输出结果：
[{'name': 'Jonh', 'age': 18}, {'name': 'Marry', 'age': 19}]
2. #### ②访问列表中字典的值

3. 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
4. #### ③遍历访问多个值

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:19

## 2.字典中存储列表

#### ①访问字典中的列表元素

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

for i in favourite_places['lin']:
print(i.title())

Beijing
Tianjin

#### ②访问字典中的值（字典中的值为列表）

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.字典中存储字典

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

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'

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

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():
for name,age in userinfo.items():
print(name,age)

-----------直接访问输出-------------------
lin 21
xue 20

-----------循环嵌套的方法输出-------------------

a:
name lin
age 21

b:
name xue
age 20

## 4.容易出的小错误：

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

• 37
点赞
• 122
收藏
觉得还不错? 一键收藏
• 8
评论
03-24 2万+
07-18 917
07-02 1万+
06-05 674
08-30 1065
08-31 2055
09-26 3038
07-27 1074
07-30 375

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