Python 3.x Python合并来自两个源的数据-类型错误

Python 3.x Python合并来自两个源的数据-类型错误,python-3.x,list,dictionary,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 int

我正在尝试获取一个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
设备列表的数据结构示例

{
"assets": [
  {
    "data": {
      "deviceid": 12581177603741,
      "devicetype": "Generic SNMP Device",
      "hostname": "myhost",
      "identifying_ip": "10.1.2.3",
      "ips": [
        {
          "ip": "10.1.2.3"
        }
      ],
    "scantime": "1531184292"
    },
    ...

我的眼睛可能会因为看太久而变得模糊。你知道我在哪里搞砸了吗?

嗯,@glibdud是对的。有些事情不像看上去的那样。在本例中,我为获取dict而调用的API将以不同的方式收集数据。如果它使用了两种不同的方法并发现了相同的设备,我将以列表格式为每种方法获取一条记录。如果它发现了一个,我会得到一个命令(有人应该问他们为什么不相信有一个项目的列表。我最喜欢的待办事项列表是[]和只有一个项目的列表。)

什么是
ip\u col
?那一行的东西不是你想的那样。最简单的方法是捕获异常并打印所有相关内容。ip_col='ip Address'这是.csv导入中ip地址列的标题。导入是用csv.DictReaderDoes完成的
CMDB_设备[ip_col]
需要是:
CMDB_设备['ip_col']]
?我很难告诉w/o是否知道数据或所有代码,但我想可能?ip_col是一个参数,用于让此方法知道包含ip地址的列的名称。我用字符串“IP地址”硬编码了它。没有更改。我发现Excel输入数据存在一些问题。细胞里有一些CRLF会弄乱一些记录。还有问题。以下是命令的开头:[OrderedDict([('\ufeffName',''),('Manufacturer',''),('Model ID','Unknown'),('Operating System','',('OS Version',''),('Description','此CI已失效…),('IP Address','')。。。
{
"assets": [
  {
    "data": {
      "deviceid": 12581177603741,
      "devicetype": "Generic SNMP Device",
      "hostname": "myhost",
      "identifying_ip": "10.1.2.3",
      "ips": [
        {
          "ip": "10.1.2.3"
        }
      ],
    "scantime": "1531184292"
    },
    ...