如果键与输入匹配,则打印键和值?

Print key AND value if key matches input?

我有字典和要打印的 for 循环:

car_dict = {'Sports':{'Audi':'A4', 
           'Ferarri':'Spider'}}

for key, value in car_dict.items():
         if key == 'Sports':
             print(key, value) 

因此,如果输入 == "Sports",它将打印:

Sports {'Audi': 'A4', 'Ferarri': 'Spider'}

如何打印它,使其看起来像:

-Sports-
Audi A4
Ferrari Spider

有一个小标题(不是必需的),一个在另一个之上并且没有 dict 语法? 我已经弄乱了一段时间,似乎找不到解决方案。这是我最远的地方!谢谢

如果键是“Sports”,您可以迭代该值:

for key, value in car_dict.items():
    if key == 'Sports':
        print('-', key)
        for pair in value.items():
            print(*pair)
        

输出:

- Sports
Audi A4
Ferarri Spider

我会将打印结果考虑到另一种方法,因为您可能会有多个类别的汽车。

此外,您可以使用 f-strings 轻松格式化输出。

您可能还想考虑使用 multi line strings,将 """ 与 f-strings 结合使用以获得良好的多行输出。请参阅下面的示例。

car_dict = {
    'Sports': {'Audi': 'A4', 'Ferarri': 'Spider'}
}


def print_category(cat_name, cars):
    print(f"- {cat_name} -")
    for (brand, model) in cars.items():
        print(brand, model)


def print_category_multiline(cat_name, cars):
    print(f"""
+---------------------------+
 {cat_name} 
+---------------------------+""")
    for (brand, model) in cars.items():
        print(brand, model)


for key, value in car_dict.items():
    print_category(key, value)
    print_category_multiline(key, value)

预期输出

- Sports -
Audi A4
Ferarri Spider

+---------------------------+
 Sports 
+---------------------------+
Audi A4
Ferarri Spider

您在 for 循环中的 if 条件目前实际上没有做任何事情,因为您只有汽车的运动类别,因此您不需要它。如果您想对类别进行一些过滤(当您有更多类别时),我当然会创建一组类别并检查当前类别是否在过滤器内的 for 循环。这看起来可以像这样完成:

cat_filter = {"Sports", "Offroad"}

for key, value in car_dict.items():
    # only print filtered values
    if key in cat_filter:
        print_category(key, value)
        print_category_multiline(key, value)