我的字典在下面;遍历它时出现错误。
mk = {'Incident': {'AlertStatus': 'SLA BREACH',
'Area': 'Test',
'Assignee': 'Incident.Coordinator',
'AssignmentGroup': 'Operating System Support (North America)',
'Category': 'incident',
'Contact': 'ALSTON, LOU',
'Description': ['Test - Request - 1 , Test - Request - 1, Test - '
'Request - 1Test - Request - 1Test - Request - '
'1Test - Request - 1Test - Request - 1Test - '
'Request - 1Test - Request - 1'],
'Impact': '2',
'IncidentID': 'IM10265',
'OpenTime': '2020-04-09T08:16:16+00:00',
'OpenedBy': 'rf',
'Phase': 'Categorization',
'Service': 'CI1001032',
'Source': '2',
'Status': 'Categorize',
'Subarea': 'Test',
'Title': 'Test - Request - 1',
'UpdatedBy': 'rf',
'UpdatedTime': '2020-04-09T08:16:25+00:00',
'Urgency': '3'},
'Messages': [],
'ReturnCode': 0}
def extract_val():
id_data = []
Assignee_data = []
id_datas = [q['Incident']['IncidentID'] for q in mk]
Assignee_datas = [t['Incident']['Assignee'] for t in mk]
print(id_datas)
print(Assignee_datas)
extract_val()
获取错误为:TypeError:字符串索引必须为整数
尽管我正在使用(事件)键,然后再使用:(事件),(受让人)之类的其他键来提取值,但仍然会出错。请在这里建议我所缺少的内容
让我们打印,您会看到您的问题...
>>> for q in mk:
... print(q)
...
Incident
Messages
ReturnCode
像这样遍历字典,就遍历键。
但是我想您的问题是,您除了拥有此类字典对象的列表之外。如果是这样,您的功能将按预期工作。
在以下代码行中:
id_datas = [q ['Incident'] ['IncidentID'] for q in mk]
您正在遍历字典mk的键。您想要做的就是遍历所有项目。这可以使用dict.items()方法完成。
尝试以下操作:
id_datas = [q ['Incident'] ['IncidentID'] for m in k.items()]
尝试一下:
def extract_val():
id_datas , Assignee_datas = map(list, zip(*[(mk[q]['IncidentID'], mk[q]['Assignee']) for q in mk if q == 'Incident']))
print(id_datas)
print(Assignee_datas)
输出:
['IM10265']
['Incident.Coordinator']
如果mk
是字典列表,请尝试此。
def extract_val():
id_datas , Assignee_datas = map(list, zip(*[(q['Incident']['IncidentID'], q['Incident']['Assignee']) for q in mk]))
print(id_datas)
print(Assignee_datas)
输出:
['IM10265', 'IM10266']
['Incident.Coordinator', 'Incident']