猿问

Python 无法将 defaultdict 值传递给函数

我有一个复杂的代码,它将一些值读取到嵌套的 defaultdict 中。然后有一个循环遍历字典中的键并使用它们 - 基本上将它们分配给另一个嵌套的默认字典。


问题是,当我想使用字典中的值并访问它们并将它们作为值传递给函数时...我得到空 {} 或类似的内容:defaultdict(<function tree at 0x2aff774309d8>


我试图写这个字典,这样我就可以看看它是否真的是空的。我的代码的一部分;


if (not families_data[family]['cell_db']['output']):

        print(rf"Output for {family} is  empty.")

        print(dict(families_data[family]['celldb']))

真正有趣的部分是,当这个“if”为真时,我会得到以下输出:


adfull 的输出为空。{'名称':'adfullx05_b','家庭':'adfull','drive_strength':0.5,'模板':'adfull','类别':'','pinmap':'','输出':' CO S', 'inout': '', '输入': 'AB CI', 'rail_supply': 'VDD VSS', 'well_supply': '', '描述': ''}


如果我将 if 中的第二行更改为


        print(families_data[family]['celldb'])

我得到以下输出:


defaultdict(<位于 0x2b45844059d8 的函数树>, {'name': 'adfullx05_b', 'family': 'adfull', 'drive_strength': 0.5, 'template': 'adfull', 'category': '', 'pinmap' : '', '输出': 'CO S', '输入输出': '', '输入': 'AB CI', 'rail_supply': 'VDD VSS', 'well_supply': '', '描述': ' '})


当输出键中有值“CO S”时,为什么“if”甚至为真?


当我尝试访问诸如 family_data[family]['cell_db']['input'] 之类的任何值并将其作为参数传递给函数时,为什么会收到 {}?


我到底做错了什么?


蓝山帝景
浏览 106回答 1
1回答

喵喵时光机

if 语句中的“cell_db”键有下划线,而 print 语句中没有。这应该可以修复它:if (not families_data[family]['celldb']['output']):&nbsp; &nbsp; print(rf"Output for {family} is&nbsp; empty.")&nbsp; &nbsp; print(dict(families_data[family]['celldb']))
随时随地看视频慕课网APP

相关分类

Python
我要回答