【问题标题】:Printing unique keys from nested dictionary in python从python中的嵌套字典中打印唯一键
【发布时间】:2020-03-03 10:40:30
【问题描述】:

我有一本字典 dict_matches 有 2 个内部字典。

dict_match的结构如下:

dict_match = {Query_ID:{Function_ID:{DB_ID:[func_ID]}}}

在顶级键 Query_ID 中,我循环遍历这些并将它们与完全独立的字典 query_count_dict 中的键进行比较,以确定键的重叠。

在这个循环中,我还导航到dict_matches 中的基本字典,以查看主密钥与哪些键DB_ID“匹配”。我的问题是,与最顶层键 Query_ID 对应的低层键 DB_ID 可以复制(我只想查看唯一键)。我尝试使用 set() 方法,但这实际上将字符串键拆分为它们的字符组件,并为每个较低级别的键打印唯一字符。任何帮助表示赞赏!

见下方代码

for k,v in dict_match.items():
    if k in query_count_dict.keys():
        print(k)
        detection_query.append(k)

        print(len(dict_match[k])/int(query_count_dict[k]))

    if type(v) is dict:
        recursive_items(v)

recursive_items 是一个导航到基本字典的函数:

def recursive_items(dictionary):
    for k, v in dictionary.items():
        if type(v) is dict:
            recursive_items(v)
        else:
            print(set(k))

【问题讨论】:

    标签: python dictionary nested


    【解决方案1】:

    您可以通过在递归函数中传递一个键列表来打印所有唯一键,以便在导航到基础时存储它们。然后将其转换为设置以删除重复项。

    def get_keys(dictionary, keys=[]):
        for k, v in dictionary.items():
            keys.append(k)
            if isinstance(v, dict):
                get_keys(v, keys)
        return set(keys)
    
    dict_match = {'A': {'A': {'B': [0], 'H': [0]}, 'D': {'C': [0], 'A': [0]}},
                  'B': {'C': {'A': [0]}, 'G': {'A': [0]}},
                  'C': {'A': {'E': [0]}, 'B': {'F': [0], 'A': [0]}, 'C': {'B': [0]}}}
    
    print(get_keys(dict_match))
    

    它只会输出唯一的键:

    {'G', 'B', 'E', 'F', 'C', 'H', 'A', 'D'}
    

    【讨论】:

    • 您好,感谢您的回复!这肯定有助于仅获得唯一的基本密钥,但是是否可以遍历主密钥并打印出每个主密钥的唯一基本密钥?即在您给出的示例中,我希望输出为:{'B','H','A','C'} {'A'} {'E','A','F','B'} 在此先感谢 :)
    • 作为参考,我的问题是,当我遍历主密钥时,即使我记得每个主密钥的功能,唯一的基本密钥也会不断附加到 keys 列表中
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-18
    • 2020-10-01
    • 2013-06-17
    • 2016-12-28
    相关资源
    最近更新 更多