是否可以在字典理解中分配变量?
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]
我编写了一个程序来转换包含字符串对象元组和数据框的嵌套字典。我不希望有元组对象,只有数据框对象。所以我写了下面的代码来从我的嵌套字典中删除元组对象:
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]