RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 1576868
Accepted
Филипп Шувалов
Филипп Шувалов
Asked:2024-04-19 18:24:05 +0000 UTC2024-04-19 18:24:05 +0000 UTC 2024-04-19 18:24:05 +0000 UTC

处理嵌套字典时,某些嵌套键不显示

  • 772
some_dict = {'tag': 'Building', 'attrib': ['CadastralNumber', 'DateCreated', 'FoundationDate'], 'CadastralBlock': {'tag': 'CadastralBlock', 'attrib': []}, 'ParentCadastralNumbers': {'tag': 'ParentCadastralNumbers', 'attrib': [], 'CadastralNumber': {'tag': 'CadastralNumber', 'attrib': []}}, 'PrevCadastralNumbers': {'tag': 'PrevCadastralNumbers', 'attrib': [], 'CadastralNumber': {'tag': 'CadastralNumber', 'attrib': []}}, 'PreviouslyPosted': {'tag': 'PreviouslyPosted', 'attrib': []}, 'Name': {'tag': 'Name', 'attrib': []}, 'ObjectType': {'tag': 'ObjectType', 'attrib': []}, 'AssignationBuilding': {'tag': 'AssignationBuilding', 'attrib': []}, 'ElementsConstruct': {'tag': 'ElementsConstruct', 'attrib': [], 'Material': {'tag': 'Material', 'attrib': ['Wall']}}, 'ExploitationChar': {'tag': 'ExploitationChar', 'attrib': ['YearBuilt', 'YearUsed']}, 'Floors': {'tag': 'Floors', 'attrib': ['Floors', 'UndergroundFloors']}, 'Area': {'tag': 'Area', 'attrib': []}, 'Location': {'tag': 'Location', 'attrib': ['AddressOrLocation'], 'FIAS': {'tag': 'FIAS', 'attrib': []}, 'OKATO': {'tag': 'OKATO', 'attrib': []}, 'KLADR': {'tag': 'KLADR', 'attrib': []}, 'OKTMO': {'tag': 'OKTMO', 'attrib': []}, 'PostalCode': {'tag': 'PostalCode', 'attrib': []}, 'RussianFederation': {'tag': 'RussianFederation', 'attrib': []}, 'Region': {'tag': 'Region', 'attrib': []}, 'District': {'tag': 'District', 'attrib': ['Name', 'Type']}, 'City': {'tag': 'City', 'attrib': ['Name', 'Type']}, 'UrbanDistrict': {'tag': 'UrbanDistrict', 'attrib': ['Name', 'Type']}, 'SovietVillage': {'tag': 'SovietVillage', 'attrib': ['Name', 'Type']}, 'Locality': {'tag': 'Locality', 'attrib': ['Name', 'Type']}, 'Street': {'tag': 'Street', 'attrib': ['Name', 'Type']}, 'Level1': {'tag': 'Level1', 'attrib': ['Type', 'Value']}, 'Level2': {'tag': 'Level2', 'attrib': ['Type', 'Value']}, 'Level3': {'tag': 'Level3', 'attrib': ['Type', 'Value']}, 'Apartment': {'tag': 'Apartment', 'attrib': ['Type', 'Value']}, 'Other': {'tag': 'Other', 'attrib': []}, 'Note': {'tag': 'Note', 'attrib': []}, 'ReadableAddress': {'tag': 'ReadableAddress', 'attrib': []}}, 'ObjectPermittedUses': {'tag': 'ObjectPermittedUses', 'attrib': [], 'ObjectPermittedUse': {'tag': 'ObjectPermittedUse', 'attrib': []}}, 'CadastralCost': {'tag': 'CadastralCost', 'attrib': ['Value'], 'DateValuation': {'tag': 'DateValuation', 'attrib': []}, 'DateEntering': {'tag': 'DateEntering', 'attrib': []}, 'DateApproval': {'tag': 'DateApproval', 'attrib': []}, 'ApplicationDate': {'tag': 'ApplicationDate', 'attrib': []}, 'RevisalStatementDate': {'tag': 'RevisalStatementDate', 'attrib': []}, 'ApplicationLastDate': {'tag': 'ApplicationLastDate', 'attrib': []}, 'ApprovalDocument': {'tag': 'ApprovalDocument', 'attrib': [], 'CodeDocument': {'tag': 'CodeDocument', 'attrib': []}, 'Name': {'tag': 'Name', 'attrib': []}, 'Series': {'tag': 'Series', 'attrib': []}, 'Number': {'tag': 'Number', 'attrib': []}, 'Date': {'tag': 'Date', 'attrib': []}, 'IssueOrgan': {'tag': 'IssueOrgan', 'attrib': []}, 'Desc': {'tag': 'Desc', 'attrib': []}}}, 'SubBuildings': {'tag': 'SubBuildings', 'attrib': [], 'SubBuilding': {'tag': 'SubBuilding', 'attrib': ['NumberRecord', 'DateCreated'], 'Area': {'tag': 'Area', 'attrib': []}, 'Encumbrances': {'tag': 'Encumbrances', 'attrib': [], 'Name': {'tag': 'Name', 'attrib': []}, 'Type': {'tag': 'Type', 'attrib': []}, 'Registration': {'tag': 'Registration', 'attrib': [], 'RightNumber': {'tag': 'RightNumber', 'attrib': []}, 'RegistrationDate': {'tag': 'RegistrationDate', 'attrib': []}}, 'Document': {'tag': 'Document', 'attrib': [], 'CodeDocument': {'tag': 'CodeDocument', 'attrib': []}, 'Name': {'tag': 'Name', 'attrib': []}, 'Series': {'tag': 'Series', 'attrib': []}, 'Number': {'tag': 'Number', 'attrib': []}, 'Date': {'tag': 'Date', 'attrib': []}, 'IssueOrgan': {'tag': 'IssueOrgan', 'attrib': []}, 'Desc': {'tag': 'Desc', 'attrib': []}}}}}, 'FlatsCadastralNumbers': {'tag': 'FlatsCadastralNumbers', 'attrib': [], 'CadastralNumber': {'tag': 'CadastralNumber', 'attrib': []}}, 'CarParkingSpacesCadastralNumbers': {'tag': 'CarParkingSpacesCadastralNumbers', 'attrib': [], 'CadastralNumber': {'tag': 'CadastralNumber', 'attrib': []}}, 'UnitedCadastralNumber': {'tag': 'UnitedCadastralNumber', 'attrib': [], 'CadastralNumber': {'tag': 'CadastralNumber', 'attrib': []}, 'Purpose': {'tag': 'Purpose', 'attrib': []}, 'Name': {'tag': 'Name', 'attrib': []}}, 'FacilityCadastralNumber': {'tag': 'FacilityCadastralNumber', 'attrib': [], 'CadastralNumber': {'tag': 'CadastralNumber', 'attrib': []}, 'Purpose': {'tag': 'Purpose', 'attrib': []}, 'Name': {'tag': 'Name', 'attrib': []}}, 'CulturalHeritage': {'tag': 'CulturalHeritage', 'attrib': [], 'InclusionEGROKN': {'tag': 'InclusionEGROKN', 'attrib': [], 'RegNum': {'tag': 'RegNum', 'attrib': []}, 'ObjCultural': {'tag': 'ObjCultural', 'attrib': []}, 'NameCultural': {'tag': 'NameCultural', 'attrib': []}}, 'AssignmentEGROKN': {'tag': 'AssignmentEGROKN', 'attrib': [], 'RegNum': {'tag': 'RegNum', 'attrib': []}, 'ObjCultural': {'tag': 'ObjCultural', 'attrib': []}, 'NameCultural': {'tag': 'NameCultural', 'attrib': []}}, 'RequirementsEnsure': {'tag': 'RequirementsEnsure', 'attrib': []}, 'Document': {'tag': 'Document', 'attrib': [], 'CodeDocument': {'tag': 'CodeDocument', 'attrib': []}, 'Name': {'tag': 'Name', 'attrib': []}, 'Series': {'tag': 'Series', 'attrib': []}, 'Number': {'tag': 'Number', 'attrib': []}, 'Date': {'tag': 'Date', 'attrib': []}, 'IssueOrgan': {'tag': 'IssueOrgan', 'attrib': []}, 'Desc': {'tag': 'Desc', 'attrib': []}}}}

def print_dict_recursive(d):
list = []
for i in d.items():
    if isinstance(i[1], dict):
        # print(i[1]['tag'], i[1]['attrib'])
        list.append(i[1]['tag'])

return list

list = print_dict_recursive(some_dict)
for i in list:
    print({i: print_dict_recursive(some_dict[i])})

我有一个带有嵌套结构的字典,我试图迭代整个结构并迭代所有 {key: value} 对。上面的代码仅影响两层嵌套并产生以下输出:

{'CadastralBlock': []}
{'ParentCadastralNumbers': ['CadastralNumber']}
{'PrevCadastralNumbers': ['CadastralNumber']}
{'PreviouslyPosted': []}
{'Name': []}
{'ObjectType': []}
{'AssignationBuilding': []}
{'ElementsConstruct': ['Material']}
{'ExploitationChar': []}
{'Floors': []}
{'Area': []}
{'Location': ['FIAS', 'OKATO', 'KLADR', 'OKTMO', 'PostalCode', 'RussianFederation', 'Region', 'District', 'City', 'UrbanDistrict', 'SovietVillage', 'Locality', 'Street', 'Level1', 'Level2', 'Level3', 'Apartment', 'Other', 'Note', 'ReadableAddress']}
{'ObjectPermittedUses': ['ObjectPermittedUse']}
{'CadastralCost': ['DateValuation', 'DateEntering', 'DateApproval', 'ApplicationDate', 'RevisalStatementDate', 'ApplicationLastDate', 'ApprovalDocument']}
{'SubBuildings': ['SubBuilding']}
{'FlatsCadastralNumbers': ['CadastralNumber']}
{'CarParkingSpacesCadastralNumbers': ['CadastralNumber']}
{'UnitedCadastralNumber': ['CadastralNumber', 'Purpose', 'Name']}
{'FacilityCadastralNumber': ['CadastralNumber', 'Purpose', 'Name']}
{'CulturalHeritage': ['InclusionEGROKN', 'AssignmentEGROKN', 'RequirementsEnsure', 'Document']}

Process finished with exit code 0

同时,有些嵌套键没有按照上面的例子显示(例如,'ApprovalDocument'键等)。现阶段我已经进入了死胡同,请专家帮忙。

python
  • 1 1 个回答
  • 36 Views

1 个回答

  • Voted
  1. Best Answer
    Stanislav Volodarskiy
    2024-04-19T22:45:43Z2024-04-19T22:45:43Z
    import collections
    
    
    def visit_dicts(d):
        q = collections.deque()
        result = []
    
        q.append(([], d))
        while q:
            target1, d = q.popleft()
    
            found = False
            for v in d.values():
                if isinstance(v, dict):
                    if not found:
                        found = True
                        target2 = []
                        result.append((d['tag'], target2))
                    q.append((target2, v))
    
            if not found:
                target1.append(d['tag'])
    
        return result
    
    ...
    
    for tag, values in visit_dicts(some_dict):
        print(tag, values)
    
    $ python temp.py
    Building ['CadastralBlock', 'PreviouslyPosted', 'Name', 'ObjectType', 'AssignationBuilding', 'ExploitationChar', 'Floors', 'Area']
    ParentCadastralNumbers ['CadastralNumber']
    PrevCadastralNumbers ['CadastralNumber']
    ElementsConstruct ['Material']
    Location ['FIAS', 'OKATO', 'KLADR', 'OKTMO', 'PostalCode', 'RussianFederation', 'Region', 'District', 'City', 'UrbanDistrict', 'SovietVillage', 'Locality', 'Street', 'Level1', 'Level2', 'Level3', 'Apartment', 'Other', 'Note', 'ReadableAddress']
    ObjectPermittedUses ['ObjectPermittedUse']
    CadastralCost ['DateValuation', 'DateEntering', 'DateApproval', 'ApplicationDate', 'RevisalStatementDate', 'ApplicationLastDate']
    SubBuildings []
    FlatsCadastralNumbers ['CadastralNumber']
    CarParkingSpacesCadastralNumbers ['CadastralNumber']
    UnitedCadastralNumber ['CadastralNumber', 'Purpose', 'Name']
    FacilityCadastralNumber ['CadastralNumber', 'Purpose', 'Name']
    CulturalHeritage ['RequirementsEnsure']
    ApprovalDocument ['CodeDocument', 'Name', 'Series', 'Number', 'Date', 'IssueOrgan', 'Desc']
    SubBuilding ['Area']
    InclusionEGROKN ['RegNum', 'ObjCultural', 'NameCultural']
    AssignmentEGROKN ['RegNum', 'ObjCultural', 'NameCultural']
    Document ['CodeDocument', 'Name', 'Series', 'Number', 'Date', 'IssueOrgan', 'Desc']
    Encumbrances ['Name', 'Type']
    Registration ['RightNumber', 'RegistrationDate']
    Document ['CodeDocument', 'Name', 'Series', 'Number', 'Date', 'IssueOrgan', 'Desc']
    
    • 1

相关问题

  • 是否可以以某种方式自定义 QTabWidget?

  • telebot.anihelper.ApiException 错误

  • Python。检查一个数字是否是 3 的幂。输出 无

  • 解析多个响应

  • 交换两个数组的元素,以便它们的新内容也反转

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    我看不懂措辞

    • 1 个回答
  • Marko Smith

    请求的模块“del”不提供名为“default”的导出

    • 3 个回答
  • Marko Smith

    "!+tab" 在 HTML 的 vs 代码中不起作用

    • 5 个回答
  • Marko Smith

    我正在尝试解决“猜词”的问题。Python

    • 2 个回答
  • Marko Smith

    可以使用哪些命令将当前指针移动到指定的提交而不更改工作目录中的文件?

    • 1 个回答
  • Marko Smith

    Python解析野莓

    • 1 个回答
  • Marko Smith

    问题:“警告:检查最新版本的 pip 时出错。”

    • 2 个回答
  • Marko Smith

    帮助编写一个用值填充变量的循环。解决这个问题

    • 2 个回答
  • Marko Smith

    尽管依赖数组为空,但在渲染上调用了 2 次 useEffect

    • 2 个回答
  • Marko Smith

    数据不通过 Telegram.WebApp.sendData 发送

    • 1 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5