【问题标题】:Python unable to pass defaultdict values to functionPython无法将defaultdict值传递给函数
【发布时间】:2020-09-17 14:04:58
【问题描述】:

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

问题是,当我想使用字典中的值并访问它们并将它们作为值传递给函数时......我得到空 {} 或类似的东西: defaultdict(

我尝试编写字典,以便查看它是否真的是空的。我的部分代码;

if (not families_data[family]['cell_db']['output']):
        print(rf"Output for {family} is  empty.")
        print(dict(families_data[family]['celldb']))

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

adfull 的输出为空。 {'name':'adfullx05_b','family':'adfull','drive_strength':0.5,'template':'adfull','category':'','pinmap':'','输出':' CO S', 'inout': '', 'input': 'A B CI', 'rail_supply': 'VDD VSS', 'well_supply': '', 'description': ''}

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

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

我得到以下输出:

defaultdict(, {'name': 'adfullx05_b', 'family': 'adfull', 'drive_strength': 0.5, 'template': 'adfull', 'category': '','pinmap':'','输出':'CO S','inout':'','输入':'A B CI','rail_supply':'VDD VSS','well_supply':'' , '描述': ''})

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

为什么我在尝试访问像family_data[family]['cell_db']['input'] 这样的任何值并将其作为参数传递给函数时会得到{}?

我到底做错了什么?

【问题讨论】:

    标签: python parameter-passing defaultdict


    【解决方案1】:

    if 语句中的“cell_db”键有下划线,而 print 语句中没有。

    这应该可以解决它:

    if (not families_data[family]['celldb']['output']):
        print(rf"Output for {family} is  empty.")
        print(dict(families_data[family]['celldb']))
    

    【讨论】:

    • 太好了,谢谢!有时它所需要的只是第二双眼睛。我担心 defaultdict 以某种神秘的方式工作。 :-D
    猜你喜欢
    • 2019-12-21
    • 2019-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-25
    • 2016-10-16
    • 2013-06-25
    • 1970-01-01
    相关资源
    最近更新 更多