You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何打印字典中重复键的值?解决嵌套标题仅输出最后键值对问题

问题描述

遍历字典列表时,发现NestedTabs中的重复Title键仅打印最后一组键值对(例如W3schools的嵌套Tabs仅输出JavaScript标题),如何实现打印字典中重复键的所有值?

使用的代码

def displayAllTabs(dict_items):
    for dict in dict_items:
        title = dict.get("Title")
        print(title)
        if "NestedTabs" in dict.keys():
            nestedTitle = dict["NestedTabs"]["Title"]
            print(f'\t{nestedTitle}')

原始字典列表

[
    {
        "index": 1,
        "Title": "SE Factory",
        "Url": "https://www.sefactory.io",
        "NestedTabs": {"Title": "UI", "Url": "https://www.sefactory.io/uix"},
    },
    {"index": 2, "Title": "Google", "Url": "https://www.google.com"},
    {
        "index": 3,
        "Title": "W3schools",
        "Url": "https://www.w3schools.com",
        "NestedTabs": {
            "Title": "Html",
            "Url": "https://www.w3schools.com/html/default.asp",
            "Title": "Css",
            "Url": "https://www.w3schools.com/css/default.asp",
            "Title": "JavaScript",
            "Url": "https://www.w3schools.com/js/default.asp",
        },
    },
]
问题原因

Python的字典不支持重复键,当你在字典里定义多个同名键时,后面的键会直接覆盖前面的。所以W3schools的NestedTabs字典中,实际只保留了最后一组Title: JavaScript和对应的Url,前面的Html、Css条目都被覆盖了,自然无法打印出所有值。

解决方案

1. 修正数据结构

把NestedTabs从单个字典改成字典列表,每个子项是包含Title和Url的独立字典,这样就能存储多个嵌套标签:

[
    {
        "index": 1,
        "Title": "SE Factory",
        "Url": "https://www.sefactory.io",
        "NestedTabs": [{"Title": "UI", "Url": "https://www.sefactory.io/uix"}],
    },
    {"index": 2, "Title": "Google", "Url": "https://www.google.com"},
    {
        "index": 3,
        "Title": "W3schools",
        "Url": "https://www.w3schools.com",
        "NestedTabs": [
            {"Title": "Html", "Url": "https://www.w3schools.com/html/default.asp"},
            {"Title": "Css", "Url": "https://www.w3schools.com/css/default.asp"},
            {"Title": "JavaScript", "Url": "https://www.w3schools.com/js/default.asp"},
        ],
    },
]

2. 修改遍历代码

修改displayAllTabs函数,循环遍历NestedTabs列表中的每个字典,打印所有Title:

def displayAllTabs(dict_items):
    for item in dict_items:
        title = item.get("Title")
        print(title)
        # 检查是否存在NestedTabs且是列表类型
        if "NestedTabs" in item and isinstance(item["NestedTabs"], list):
            for nested_tab in item["NestedTabs"]:
                nested_title = nested_tab.get("Title")
                print(f'\t{nested_title}')

运行结果

执行修改后的代码,会输出:

SE Factory
        UI
Google
W3schools
        Html
        Css
        JavaScript

内容的提问来源于stack exchange,提问作者Abbas Kanj

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 07:33:13