字典中某个键的KeyError

问题描述

我有一个包含键的字典(cell0),如下所示。很明显,我的词典中有一个名为“ 46”的键。而且我已经确认该密钥中包含正确的数据。当我使用for循环并尝试遍历字典以执行某些任务时,它显示了“ KeyError:46”。任何人都可以帮助了解为什么会这样吗?

cell0.keys()

dict_keys(['0','1','2','3','4','5','6','7','8','9','10','11','12','13','14','15','16','17','18','19','20','21','22','23','24','25','26','27','28','29','30','31','32','33','34','35','36','37','38','39','40','41','42','43','44','45','46','47','48','49','50','51','52','53','54','55','56','57','58','59','60','61','62','63','64','65','66','67','68','69','70','71','72','73','74','75','76','77','78','79','80','81','82','83','84','85','86','87','88','89','90','91','92','93','94','95','96','97','98','99','100','101','102','103','104','105','106','107','108','109','110','111','112','113','114','115','116','117','118','119','120','121','122','123','124','125','126','127','128','129','130','131','132','133','134','135','136','137','138','139','140','141','142','143','144','145','146','147','148','149','150','151','152','153','154','155','156','157','158','159','160','161','162','163','164','165','166','167','168','169','170','171','172','173','174','175','176','177','178','179','180','181','182','183','184','185','186','187','188','189','190','191','192','193','194','195','196','197','198','199','200','201','202','203','204','205','206','207','208','209','210','211','212','213','214','215','216','217','218','219','220','221','222','223','224','225','226','227','228','229','230','231','232','233','234','235','236','237','238','239','240','241','242','243','244','245','246','247','248','249','250','251','252','253','254','255','256','257','258','259','260','261','262','263','264','265','266','267','268','269','270','271','272','273','274','275','276','277','278','279','280','281','282','283','284','285','286','287','288','289','290','291','292','293','294','295','296','297','298','299','300','301','302','303','304','305','306','307','308','309','310','311','312','313','314','315','316','317','318','319','320','321','322','323','324','325','326','327','328','329','330','331','332','333','334','335','336','337','338','339','340','341','342','343','344','345','346','347','348','349','350','351','352','353','354','355','356','357','358','359','360','361','362','363','364','365','366','367','368','369','370','371','372','373','374','375','376','377','378','379','380','381','382','383','384','385','386','387','388','389','390','391','392','393','394','395','396','397','398','399','400','401','402','403','404','405','406','407','408','409','410','411','412','413','414','415','416','417','418','419','420','421','422','423','424','425','426','427','428','429','430','431','432','433','434','435','436','437','438','439','440','441','442','443','444','445','446','447','448','449','450','451','452','453','454','455','456','457','458','459','460','461','462','463','464','465','466','467','468','469','470','471','472','473','474','475','476','477','478','479','480','481','482','483','484','485','486','487','488','489','490','491','492','493','494','495'])

Keys in the dictionary and data in key  '46'

我执行了以下填充操作,以使所有数组的大小相同。

for key in cell0:

for i in cell0[i]:
    x = cell0[i]['I'].shape
    x = sum(x)
    y = cell0[i][key].shape
    y = sum(y)
    l = (x-y)

    if x != y:
        cell0[i][key] = np.pad((cell0[i][key]),[(0,l)],mode='constant',constant_values=0)

当我使用上面的代码运行单元格时,出现了这样的错误。

KeyError                                  Traceback (most recent call last)
<ipython-input-9-0955afc863ef> in <module>
  1 for key in cell0:
  2 
  ----> 3     for i in cell0[i]:
  4         x = cell0[i]['I'].shape
  5         x = sum(x)

KeyError: 46

解决方法

如果cell0是字典,则无法切片 ---->对于cell0 [i]

中的i

考虑到'dict_keys'(cell0.keys())对象也是不可订阅的

您可以使用cell0.items()来访问键和值

请注意,最好使用cell0.get(key)方法访问字典中的值

for key,value in cell0.items():
     x = value.get("I").shape()
     ...# your code

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...