Python - 嵌套列表 - 调用子列表的嵌套索引

Python - Nested lists - Call nested indexes of sublist

我有一个包含嵌套子列表的列表,如下所示:

my_list = {'active': {'type': 'boolean', 'string': 'Active'}, 'name': {'type': 'char', 'string': 'Title'}, 'description': {'type': 'html', 'string': 'Description'}, 'priority': {'type': 'selection', 'string': 'Priority'}, 'product': {'type': 'char', 'help': 'Selected product by user', 'string': 'Product'}}

您会注意到子列表的内容并不总是相同:'type''string',有时 'help'

我可以运行一个基本的for循环来显示列表的元素:

for i in my_list:
    print(i)

哪个 returns 对我来说:

active
name
description
priority
product

但是我怎样才能遍历子列表的项目呢?我想我需要嵌套另一个 for 循环。

我想显示具体信息,例如:

- Active: active, boolean
- Title: name, char
- Description: description, html
- Priority: priority, selection
- Product: product, char, Selected product by user

所以第一件事。这不是一个列表。这是 Python 中的嵌套字典或 dict。这是向您展示差异的 link:Difference between List and Dictionary in Python

您可以通过键名引用字典元素。例如:

my_list['active'] # {'type': 'boolean', 'string': 'Active'}

或者当您不确定特定密钥是否存在时,请使用 get() 方法。如果没有具有指定名称的密钥,它将 return None。要获得您想要的输出,这里有一个快速解决方案:

for elem in my_list:
    output = f'{my_list[elem]["string"]}: {elem}, {my_list[elem]["type"]}'
    is_help = my_list[elem].get("help")
    if is_help:
        output = f'{output}, {is_help}'
    print(output)

这将被打印:

Active: active, boolean
Title: name, char
Description: description, html
Priority: priority, selection
Product: product, char, Selected product by user