从pythondi获取某些密钥

2024-04-24 22:50:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个python dict,下面是dict键的输出:

type(es_dict)
<class 'dict'>
type(es_dict.keys())
<class 'dict_keys'>

es_dict.keys()
dict_keys(['b_Biomass_Mid', <class 'oemof.solph.blocks.Bus'>,
           'b_Coal_Mid', 'b_Gas_Mid', 'b_Lignite_Mid', 'b_Elec_Mid',
           's_Biomass_Mid', <class 'oemof.solph.blocks.Flow'>,
           's_Coal_Mid', 's_Gas_Mid', 's_Lignite_Mid', 'rs_Hydro_Mid',
           <class 'oemof.solph.blocks.InvestmentFlow'>, 'rs_Solar_Mid',
           'rs_Wind_Mid', 'pp_Biomass_Mid', <class 'oemof.solph.blocks.Transformer'>,
           'pp_Coal_Mid', 'pp_Gas_Mid', 'pp_Lignite_Mid', 'Elec_Mid',
           'storage_Elec_Mid', 'b_Biomass_South', 'b_Coal_South',
           'line_Mid_North', 'line_North_South', 'line_Mid_South'])

我想将包含'line'的键收集到python列表中。你知道吗

为此,我使用以下代码段:

list = []
for key in es_dict.keys():
    if 'line' in key:
        list.append(key)

但我得到了以下错误:

    if 'line' in key:
TypeError: argument of type 'type' is not iterable

如何解决这个问题?你知道吗


Tags: keyestypelinekeysdictclasspp
2条回答

这不是代码的问题,而是dict是如何创建的。dict中的一些键是类型/类,而不是实例。即<class 'oemof.solph.blocks.Bus'>

这很可能是个虫子。看看创建这个映射的代码。你知道吗

es_dict的一些键是类对象,它们是不可iterable的。在使用in运算符检查'line'是否是其子字符串之前,可以添加一个条件以确保键是字符串:

if isinstance(key, str) and 'line' in key:

相关问题 更多 >