我试着做一个口袋妖怪“数据库”的种类。我要这个程序输出每一个精灵:名字,类型,演变,进化到。每个名称都是我的pokemon字典中的一个键。每个值都是另一个字典,其中包含作为键的信息(类型、演化自、演化到)。这些键值是理想的输出。问题是,type键有一个列表作为它的值,当我试图运行它时,我得到了这个错误:
Name: Bulbasaur
Traceback (most recent call last):
File "pokemon.py", line 51, in <module>
print("Type: " + info["type"])
TypeError: cannot concatenate 'str' and 'list' objects以下是我的代码:
pokemon = {
"bulbasaur": {
"type": ["grass", "poison"],
"evo_from": "none",
"evo_to": "ivysaur"
},
"ivysaur": {
"type": ["grass", "poison"],
"evo_from": "bulbasaur",
"evo_to": "venusaur"
},
"venusaur": {
"type": ["grass", "poison"],
"evo_from": "ivysaur",
"evo_to": "none"
},
"charmander": {
"type": ["fire"],
"evo_from": "none",
"evo_to": "charmeleon"
},
"charmeleon": {
"type": ["fire"],
"evo_from": "charmander",
"evo_to": "charizard"
},
"charizard": {
"type": ["fire", "flying"],
"evo_from": "charmeleon",
"evo_to": "none"
},
"squirtle": {
"type": ["water"],
"evo_from": "none",
"evo_to": "wartortle"
},
"wartortle": {
"type": ["water"],
"evo_from": "squirtle",
"evo_to": "blastoise"
},
"blastoise": {
"type": ["water"],
"evo_from": "wartortle",
"evo_to": "none"
}
}
for poke, info in pokemon.items():
print("\nName: " + poke.title())
print("Type: " + info["type"])
print("Evolves from " + info["evo_from"])
print("Evolves to " + info["evo_to"])我希望输出如下所示:
Name: Bulbasaur
Type: Grass, Poison
Evolves from none
Evolves to Ivysaur发布于 2017-01-11 23:31:37
您的type dict成员是一个列表,您不能连接字符串和list。相反,将列表中的所有成员连接到一个字符串中,并显示该字符串。
print("Type: " + ', '.join(info["type"]))或者如果您希望以通常的repl格式显示列表
print("Type: %r" % info["type"])发布于 2017-01-11 23:33:21
实际上,如果不将字符串和列表转换为字符串,则无法连接字符串和列表。
幸运的是,对于print,您不需要连接。您只需分别打印这两项:
print("Type:", info["type"])这将使用列表的默认Python表示形式。如果您想自定义它,可以使用str.join
print("Type:", ", ".join(info["type"]))发布于 2017-01-11 23:32:13
类型是一个列表,您需要这样对待它,您需要决定如何用字符串显示列表中的元素,
首先,您可能希望将它们分隔开。
"Type: {}".format(','.join(info["type"]))https://stackoverflow.com/questions/41602665
复制相似问题