1.了解嵌套, 将一系列字典存储在列表中, 或将列表作为值存储在字典中叫做嵌套
NPC_0 = {
'name': '正义的伙伴',
'damage_value': 20,
}
NPC_1 = {
'name': '正义本人',
'damage_value': 250,
}
NPC_2 = {
'name': '诚实的伙伴',
'damage_value': 5,
}
NPCs = [NPC_0, NPC_1, NPC_2] # 把字典存到列表中
for NPC in NPCs:
print(NPC)
# 下面的例子是自动创建30个NPC
import random
NPCs = [] # 创建一个空的列表, 用于存放字典
teg = 1 # 对NPC编号用于区分姓名
for npc_number in range(30):
value = random.randint(20, 30) # 可以利用random库给NPC赋予不同的伤害值
level = random.randint(10, 20) # 可以利用random库给NPC赋予不同的等级
new_NPC = {'name': f'NPC_{str(teg)}', 'damage_value': value, 'level': level, }
NPCs.append(new_NPC)
teg = teg + 1
for npc in NPCs[:5]: # 打印显示五个NPC
print(npc)
# 字典的值可以是多种类型, 可以是常量, 可以是变量, 还可以是函数返回值
# 我们还可以通过循环遍历修改字典列表里词典的元素
for npc in NPCs: # 这里的npc存放的是字典
if npc['damage_value'] >= 25:
npc['location'] = 'dangerous_area' # 如果npc的伤害值大于等于25那么把它分配到危险地区
else:
npc['location'] = 'safe_area' # 如果npc的伤害值低于25那么把它分配到安全地区
for npc in NPCs[:5]: # 此处只显示前五个NPC的字典
print(npc)
2.在字典里存储列表, 上面是把字典存到列表中, 下面是如何把列表存到字典里
# 存储所点披萨的信息
pizza = {
'crust': 'think', # crust /krʌst/ n.面包皮, 馅饼的包边
'toppings': ['mushrooms', 'extra cheese'] # 'toppings'相关的值是一个列表, 里边包含了顾客所点的配料的信息
}
# 概述所点的披萨
print(f"You ordered a {pizza['crust']}-crust pizza "
"with the following toppings:")
for topping in pizza['toppings']:
print("\t" + topping)
# 下面是调查大家最喜欢的编程语言的例子
favorite_languages = {
'jen': ['python', 'ruby'],
'sarah': ['c'],
'edward': ['ruby', 'go'],
'phil': ['python', 'haskell']
}
for name, languages in favorite_languages.items(): # 记得加items()
print(f"\n{name.title()}'s favorite languages are: ") # 变量name用于存储'键', 变量languages用于存储列表, language的类型是列表
for language in languages:
print(f"\t{language.title()}")
3.在字典里存储字典
users = {
'aeinstein': {
'first': 'albert',
'last': 'einstein',
'location': 'princeton',
}, # 别忘了加','
'mcurie': {
'first': 'marie',
'last': 'curie',
'location': 'paris',
}, # 最后一个键值对后面','可加可不加
}
for username, user_info in users.items(): # 同样是两个变量, 一个存'键'一个存'值', 不过这里的'值'仍是一个字典
print(f"\nUsername: {username}")
full_name = f"{user_info['first']} {user_info['last']}"
location = user_info['location']
print(f"\tFull name: {full_name.title()}")
print(f"\tLocation: {location.title()}")
# 上面的字典结构都是一样的, 虽然Python并没有这样规定, 但这样遍历起来更容易
总结一下, 不论是嵌套还是在字典中存储列表还是在字典中套娃字典, 都一定要注意其格式
没了