如何在字典中打印重复键的值?

How can I print the values of duplicate keys in a dictionary?

提问人:Abbas Kanj 提问时间:11/12/2023 最后编辑:ndcltAbbas Kanj 更新时间:11/13/2023 访问量:63

问:

它只打印嵌套标题中的最后一个键值对。

这是我正在使用的代码:

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",
        },
    },
]

例如:在 w3schools 嵌套选项卡中,它只打印 Javascript 标题。

python 字典 重复键

评论

1赞 slothrop 11/12/2023
这回答了你的问题吗?如何在 Python 中制作具有重复键的字典?
1赞 slothrop 11/12/2023
您的字典没有重复的键,因为这是不可能的。当你写类似 的东西时,每个键的最后一次出现只是覆盖前一个键。d = {'a': 1, 'b': 2, 'a': 3}
0赞 Abbas Kanj 11/12/2023
是的,我知道最后一个密钥会覆盖前一个密钥。但我问他们是否是一种仅出于打印目的而绕过这个问题的方法
0赞 slothrop 11/12/2023
这是不可能的,因为该对象不包含有关被覆盖的“上一个”值的任何信息。dict_items
1赞 Codist 11/12/2023
您的列表(如问题中所示)是有效的 Python 代码。但是,如果您打印列表,您会注意到它不包含您希望的内容。与 NestedTabs 关联的值可能应该是字典列表

答:

-1赞 new92 11/13/2023 #1

尝试使用此解决方案

def displayAllTabs(dict_items):
    for item in dict_items:
        title = item.get("Title")
        print(title)

        if "NestedTabs" in item:
            nested_tabs = item['NestedTabs']
            if "Title" in nested_tabs and "Url" in nested_tabs:
                nested_title = nested_tabs["Title"]
                nested_url = nested_tabs["Url"]
                print(f'\tNested Tab: {nested_title} ({nested_url})')
            elif isinstance(nested_tabs, list):
                for nested_tab in nested_tabs:
                    nested_title = nested_tab.get("Title")
                    nested_url = nested_tab.get("Url")
                    print(f'\tNested Tab: {nested_title} ({nested_url})')

dict_items = [
    {
        "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"},
        ],
    },
]

displayAllTabs(dict_items=dict_items)

您需要将“NestedTabs”字典中的项目放在列表中。我想不出任何其他方法可以在不遇到错误的情况下检索该信息。

评论

0赞 Codist 11/13/2023
更改数据以适合代码是不寻常的。通常情况正好相反
0赞 new92 11/14/2023
当然。我刚刚发布了一个解决方案。我找不到其他方法来检索具有特定格式的数据而不会遇到错误。
0赞 Community 11/14/2023
正如目前所写的那样,你的答案尚不清楚。请编辑以添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。您可以在帮助中心找到有关如何写出好答案的更多信息。