我正在尝试获取一个Excel文件,并将文件中的某些列添加到现有字典中。字典是由产品API创建的,因此我只能使用现有的格式。
错误消息:
File "C:\Users\me\RISC.py", line 143, in <listcomp>
devices=[x for x in assets if x['data']
['identifying_ip']==CMDB_device[ip_col]]
TypeError: list indices must be integers or slices, not str
这是呼叫代码:
CMDBlist=self._csv_dict_list(CMDBfile) #imports .csv as ordered dict
for CMDB_device in CMDBlist:
assets=device_list['assets'] #a dictionary that includes a list of devices
devices=[x for x in assets if x['data']['identifying_ip']==CMDB_device[ip_col]]
if devices.length()>0: # We matched on IP...do work
device_list的数据结构示例
{
"assets": [
{
"data": {
"deviceid": 12581177603741,
"devicetype": "Generic SNMP Device",
"hostname": "myhost",
"identifying_ip": "10.1.2.3",
"ips": [
{
"ip": "10.1.2.3"
}
],
"scantime": "1531184292"
},
...
看了这么久,我的眼睛可能变得模糊了。有什么想法让我搞砸了吗?
答案 0 :(得分:0)
好吧,@ glibdud是正确的。事情看起来不一样。在这种情况下,我为获取字典而调用的API将以不同的方式收集数据。如果它使用2种不同的方法并发现相同的设备,则我将以列表格式获得每个记录。如果发现一个,我会得到一则字典。 (有人应该问他们为什么不相信只有一项的列表。我最喜欢的待办事项是[]和只有一项的列表。)