是否可以在字典理解中分配变量?

Is it possible to assign variables inside of a dictionary comprehension?

我编写了一个程序来转换包含字符串对象元组和数据框的嵌套字典。我不希望有元组对象,只有数据框对象。所以我写了下面的代码来从我的嵌套字典中删除元组对象:

imported_dict = df_class.class_func(self)

keyList = imported_dict.keys()

newDict = dict.fromkeys(keyList)

for key in keyList:
     subkeyList = imported_dict[key].keys()
     newDict[key] = dict.fromkeys(subkeyList)
     
     for subkey in subkeyList:
         newDict[key][subkey] = imported_dict[key][subkey][1] #because I only want the dataframe

以上成功生成了所需的输出,它是一个仅包含数据框的嵌套字典。我的问题是,我可以使用字典理解来做到这一点吗?我过去曾尝试使用类似的问题来理解字典。每次我尝试计算如下表达式时: subkeyList = imported_dict[key].keys() 我都会收到语法错误。有没有办法克服这个赋值限制?

编辑:

它的输入是一个字典,其中包含类似于以下内容的数据:

{'A': {'1': (str obj, df obj),...,'12':(str obj, df obj)},..., 'Z': {'1': (str obj, df obj),...,'12':(str obj, df obj)}}

期望的结果是:

{'A': {'1': [df obj],...,'12':[df obj]},..., 'Z': {'1': [df obj],...,'12':[df obj]}}

我能够达到这个结果。我想使用字典理解重现相同的结果并避免语法错误。

我可能错了,但看起来你的循环转换为这个嵌套字典理解。

您根本不需要dict.fromkeys()

newDict = {
    key: {
        subkey: subvalue[1]
        for (subkey, subvalue) in value.items()
    }
    for (key, value) in imported_dict.items()
}

等效的简单 for 循环构造是

newDict = {}
for key, value in imported_dict.items():
    newDict[key] = subDict = {}
    for subkey, subvalue in value.items():
        subDict[subkey] = subvalue[1]