6.4 嵌套
6.4.1 字典列表
alien_0={'color':'yellow','point':'5'}
alien_1={'color':'red','point':'10'}
alien_2={'color':'green','point':'15'}
aliens=[alien_0,alien_1,alien_2]#字典名不加引号
for alien in aliens:
print(alien)
#输出
{'color': 'yellow', 'point': '5'}
{'color': 'red', 'point': '10'}
{'color': 'green', 'point': '15'}
只需要将创建好的字典名存入列表就可以实现字典列表。
alien_0={'color':'yellow','point':'5'}
alien_1={'color':'red','point':'10'}
alien_2={'color':'green','point':'15'}
aliens=[alien_0,alien_1,alien_2]
for alien in range(30):
alien={'color':'red','point':'10'}
aliens.append(alien)
for alien in aliens[:5]:
print(alien)
#输出
{'color': 'yellow', 'point': '5'}
{'color': 'red', 'point': '10'}
{'color': 'green', 'point': '15'}
{'color': 'red', 'point': '10'}
{'color': 'red', 'point': '10'}
使用for
循环批量增加,再用append
方法将新增的字典放到列表内,使用列表的切片输出列表的前5个字典。
vuls=[]
for vul in range(30):
new_vul={'num':3,'level':'high'}
vuls.append(new_vul)
print("there are "+str(len(vuls)) +" vuls.")
#输出
there are 30 vuls.
用len
直接得出列表的长度,str
将整形转换为字符型才能字符串接字符串。
vuls=[]
for vul in range(30):
new_vul={'num':'3','level':'high'}
vuls.append(new_vul)
print("there are "+str(len(vuls)) +" vuls.")
for vul in vuls[:3]:#使用`for`循环改变列表前三个字典的键值对的值
if vul['num']=='3':#如果字典中的键值对符合条件,那么重新赋值
vul['num']='1'
vul['level']='serious'
for vul in vuls[:5]:
print(vul)
vuls=[]
for vul in range(30):
new_vul={'num':'3','level':'high'}
vuls.append(new_vul)
print("there are "+str(len(vuls)) +" vuls.")
for vul in vuls[:3]:
if vul['num']=='3':
vul['num']='1'
vul['level']='serious'
for vul in vuls[:4]:
if vul['num']=='1':
vul['num']='4'
vul['level']='low'
for vul in vuls[:5]:
print(vul)
列表可以包含大量字典信息。当需要为多个用户创建字典时,这些存放在列表的字典结构相同,可以遍历或以相同的方式处理字典。
6.4.2 在字典中存储列表
pizza={
'crust':'thick',
'toppings':['mushroom','fish'],
}
print("you order "+pizza['crust']+"-crust pizza "+
"with the topping is: ")
for topping in pizza['toppings']:
print("\t"+ topping)
#输出
you order thick-crust pizza with the topping is:
mushroom
fish
将一个列表作为键值对的值存放在字典当中。
#many_users.py
#2024.4.5
favorite_language={
'amy':['c','c++'],
'betty':['python','c'],
}
for name,languages in favorite_language.items():
print("\n"+name.title())
for language in languages:
print(language)
#输出
Amy
c
c++
Betty
python
c
在主循环中使用的第二个for
是要便利languages
列表。
列表和字典如果嵌套层级太多,就是字典套列表再套字典这样的情况,最好考虑再考虑更好的解决办法。
6.4.3 在字典中存储字典
users={
'123':{
'first':'a1',
'medium':'2',
'last':'3',
},
'456':{
'first':'b4',
'medium':'5',
'last':'6',
},
}
for username,user_info in users.items():
print("\nusername:"+username)
full_name=user_info['first']+user_info['medium']+user_info['last']
print("\nfull_name"+full_name.title())
#输出
username:123
full_nameA123
username:456
full_nameB456
先建立一个字典,把用户名字作为字典的键,用户作为值,用户信息放在子字典内,要用相同的结构来设置用户信息。
for
循环遍历字典users字典,把键存储在变量username,子字典作为值存储在user_info。打印存储在变量username里的键。
user_info存储了两个字典,根据键访问字典内部。
6-7
people={
'1':{
'first':'a1',
'medium':'2',
'last':'3',
},
'2':{
'first':'b4',
'medium':'5',
'last':'6',
},
'3':{
'first':'c3',
'medium':'7',
'last':'8',
},
}
for username,user_info in people.items():
print("\nusername:"+username)
full_name=user_info['first']+user_info['medium']+user_info['last']
print("\nfull_name"+full_name.title())
#输出
username:1
full_nameA123
username:2
full_nameB456
username:3
full_nameC378
6-8
#python的语法严格对于缩进敏感
pig={#创建字典和列表都用等号
'name':'a1',
'num':'1',
},#添加了逗号在输出时会用括号括起来
cat={
'name':'b4',
'num':'2',
},
dog={#字典名不用加引号
'name':'c3',
'num':'3',
},
pets=[pig,cat,dog,] #字典名作为列表元素
for i in pets:
print(i)
#输出
({'name': 'a1', 'num': '1'},)
({'name': 'b4', 'num': '2'},)
({'name': 'c3', 'num': '3'},)
6-9
#favorite_places
favorite_places={
'lily':['yunnan','jiangxi','guilin',],
'tom':['yangzhou','jaingsu','beijing',],
'amy':['hangzhou','gansu','ningxia',],
}#将城市名放在列表内作为字典键值对的值
for name,places in favorite_places.items():#遍历字典键值对分别将键和值赋给两个变量name和places
print(name.title()+" favorite places is ")#首字母大写的形式输出键
for i in places:#在输出一个键后遍历一次places的值即一个列表内的所有元素
print("\t"+i.upper())#以大写形式输出列表内的每一个元素