首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >列表作为字典中的值-不能连接'str‘和' list’对象

列表作为字典中的值-不能连接'str‘和' list’对象
EN

Stack Overflow用户
提问于 2017-01-11 23:27:26
回答 5查看 256关注 0票数 0

我试着做一个口袋妖怪“数据库”的种类。我要这个程序输出每一个精灵:名字,类型,演变,进化到。每个名称都是我的pokemon字典中的一个键。每个值都是另一个字典,其中包含作为键的信息(类型、演化自、演化到)。这些键值是理想的输出。问题是,type键有一个列表作为它的值,当我试图运行它时,我得到了这个错误:

代码语言:javascript
复制
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

以下是我的代码:

代码语言:javascript
复制
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"])

我希望输出如下所示:

代码语言:javascript
复制
Name: Bulbasaur
Type: Grass, Poison
Evolves from none
Evolves to Ivysaur
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2017-01-11 23:31:37

您的type dict成员是一个列表,您不能连接字符串和list。相反,将列表中的所有成员连接到一个字符串中,并显示该字符串。

代码语言:javascript
复制
print("Type: " + ', '.join(info["type"]))

或者如果您希望以通常的repl格式显示列表

代码语言:javascript
复制
print("Type: %r" % info["type"])
票数 3
EN

Stack Overflow用户

发布于 2017-01-11 23:33:21

实际上,如果不将字符串和列表转换为字符串,则无法连接字符串和列表。

幸运的是,对于print,您不需要连接。您只需分别打印这两项:

代码语言:javascript
复制
print("Type:", info["type"])

这将使用列表的默认Python表示形式。如果您想自定义它,可以使用str.join

代码语言:javascript
复制
print("Type:", ", ".join(info["type"]))
票数 3
EN

Stack Overflow用户

发布于 2017-01-11 23:32:13

类型是一个列表,您需要这样对待它,您需要决定如何用字符串显示列表中的元素,

首先,您可能希望将它们分隔开。

代码语言:javascript
复制
"Type: {}".format(','.join(info["type"]))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41602665

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档