Python合并两个来源的数据-类型错误

时间:2018-07-12 17:26:20

标签: python-3.x list dictionary

我正在尝试获取一个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"
    },
    ...

看了这么久,我的眼睛可能变得模糊了。有什么想法让我搞砸了吗?

1 个答案:

答案 0 :(得分:0)

好吧,@ glibdud是正确的。事情看起来不一样。在这种情况下,我为获取字典而调用的API将以不同的方式收集数据。如果它使用2种不同的方法并发现相同的设备,则我将以列表格式获得每个记录。如果发现一个,我会得到一则字典。 (有人应该问他们为什么不相信只有一项的列表。我最喜欢的待办事项是[]和只有一项的列表。)