所以,我有一个问题,我必须采取特定的键及其相应的值,并且当且仅当条件满足时才将它们添加到新的dict中。更具体地说,我定义了一个函数node index.js
,它检查给定数据库中的Pokemon的类型是否与字符串 list 中的类型匹配。
给定数据库的格式如下:
pokemon_by_types(db, types)
如您所见,索引1和2将始终是类型的位置。
我需要创建一个以上述格式检查给定dict的函数,并查看类型(一个,if语句至少需要一个为真)与给定的字符串“types”列表匹配。
如果确实匹配,我需要将这些特定的键和值添加到空字典中。
以下是我目前的代码:
sample_db = {
"Bulbasaur": (1, "Grass", "Poison", 45, 49, 49, 45, 1, False),
"Charmander": (4, "Fire", None, 39, 52, 43, 65, 1, False),
"Charizard": (6, "Fire", "Flying", 78, 84, 78,100, 1, False),
"Moltres": (146, "Fire", "Flying", 90,100, 90, 90, 1, True),
"Crobat": (169, "Poison", "Flying", 85, 90, 80,130, 2, False),
"Tornadus, (Incarnate Form)": (641, "Flying", None, 79,115, 70,111, 5, True),
"Reshiram": (643, "Dragon", "Fire", 100,120,100, 90, 5, True)
}
目前,没有添加到dict'tdb'。
答案 0 :(得分:1)
您可以使用dict理解来获取您正在寻找的项目:
def pokemon_by_types(db, types):
return {pokemon: info for pokemon, info in db.items() if (info[1] in types or info[2] in types)}
您的示例存在的问题是:if ((db[pokemon])[1]) or ((db[pokemon])[2]) in types:
这就是说,如果((db[pokemon])[1])
返回True
或((db[pokemon])[2])
在types
中,则if db[pokemon][1] in types or db[pokemon][2] in types:
。
您必须指定每个条件:tdb.update(db)
另一个问题是if
。如果将True
语句评估为
-Tutorial (folder)
- index.html
- stylesheet.css
,这实际上会将所有元素添加到tdb中。