如何显示词典中的项目列表?

时间:2018-10-19 02:55:17

标签: python python-3.x

这个问题要求通过定义一个名为print_room_items(room)的函数,我应该将一个房间作为输入并显示在这个房间中找到的物品的列表。如果房间中没有物品,则不会打印任何内容。

这里有2个房间:

room_reception = {
    "name": "Reception",
    "description": '768',
    "exits": {"south": "Admins", "east": "Tutor", "west": "Parking"},
    "items": [item_biscuits, item_handbook]
}
room_tutor = {
    "name": "your personal tutor's office",
    "description": '890',
    "exits": {"west": "Reception"},
    "items": []
}

我想到的代码是:

def print_room_items(room):
    room_item_01 = room['items'][0]['name']
    room_item_02 = room['items'][1]['name']
    print(room_item_01)
    print(room_item_02)

print_room_items(rooms["Reception"])

这样的代码看起来并不特别优雅。最重要的是,当我尝试为一个没有任何项目而不是没有任何输出的房间运行代码时,我确实得到了一个错误。在这种情况下,辅导室。

4 个答案:

答案 0 :(得分:1)

一种方法:

def print_room_items(room):
    for item in room ['items']:
        print(item)

或者,如果您需要打印的是“ item ['name']”:

def print_room_items(room):
    for item in room ['items']:
        print(item['name'])

答案 1 :(得分:0)

您可以使用for循环遍历项目:

def print_room_items(room):
    for item in room['items']:
        print(item['name'])

如果要在一行中打印项目,并用逗号分隔,则可以将str.join方法与生成器表达式一起使用:

def print_room_items(room):
    print(', '.join(item['name'] for item in room['items']))

答案 2 :(得分:0)

或者您可以执行join

def print_room_items(room):
    print('\n'.join([item['name'] for item in room['items']]))

如果要限制存在(是否意味着items的{​​{1}}和/或name不存在,则这样):

items

或列表理解打印:

def print_room_items(room):
    try:
        print('\n'.join([item['name'] for item in room['items']]))
    except:
        print('error')

如果要限制存在(是否意味着def print_room_items(room): [print(item['name']) for item in room['items']] 的{​​{1}}和/或items不存在,则这样):

name

答案 3 :(得分:0)

最简单的方法:

def print_room_items(room):
    [print(item) for item in room["items"]]

如果没有任何项目,它将不会引发错误,并且什么也不返回。

但是,在当前代码中,“ item_biscuits”和“ item_handbook”未定义。如果您可以向我们展示其中一项的示例,也许我们会更好地提供帮助。