从包含列表的嵌套字典中打印列表索引

时间:2019-02-06 18:41:07

标签: python python-3.x list dictionary indexing

我正在尝试从由嵌套字典和列表组成的字典中进行打印。不幸的是,我在使用foo从列表中打印项目时遇到了麻烦。这是我的代码:

length > 1

输出正是我想要的,直到它到达键animals = { 'cats': { 'name': 'moose', 'color': 'black & white', 'alias':'Moosalini' }, 'dogs': { 'name': ['scout', 'sulley'], 'color': 'white & orange', 'alias': ['skump', 'skulley'] } } for animal_type, animal_info in animals.items(): print('Animal type: ', animal_type) for key in animal_info: print(key + ': ' + animal_info[key]) 下与'name'关联的列表。我的代码不会串联该列表,因为它不是字符串。我以为可以像字符串一样串联列表?

'dogs'

我尝试将str()函数放在animal_info [key]前面,该函数可以进行串联,但包括这样的列表括号。

Animal type:  cats
name: moose
color: black & white
alias: Moosalini
Animal type:  dogs
Traceback (most recent call last):
File "/Users/Jaron/Documents/nested dictionary.py", line 14, in <module>
    print ( key + ': ' + animal_info[key])
    TypeError: can only concatenate str (not "list") to str

我希望输出看起来像这样:

Animal type:  dogs
name: ['scout', 'sulley']
color: white & orange
alias: ['skump', 'skulley']

如何在嵌套字典内的字典中指定列表中的项目索引,以便字符串串联起作用?另外,有没有一种方法可以使列表的连接在不保留列表括号[]的情况下与程序一起使用?任何帮助表示赞赏!

2 个答案:

答案 0 :(得分:2)

在连接到字符串之前,必须加入列表才能将它们转换为字符串。可以使用animals ={'cats':{'name': 'moose', 'color':'black & white', 'alias':'Moosalini'}, 'dogs':{'name':['scout', 'sulley'], 'color': 'white & orange', 'alias': ['skump', 'skulley']}} for animal_type, animal_info in animals.items(): print(f'Animal type: {animal_type}') for key, value in animal_info.items(): if isinstance(value, list): print(f"{key}: {', '.join(value)}") else: print(f'{key}: {value}')

{{1}}

答案 1 :(得分:0)

使用连接方法(字符串):

if isinstance(animal_info[key], list):
    print(key + ':' + ','.join(animal_info[key]);