Python 如何访问列表中的消息键
我想访问此词典列表中的“message”键值,但不知道如何访问Python 如何访问列表中的消息键,python,python-3.x,list,dictionary,Python,Python 3.x,List,Dictionary,我想访问此词典列表中的“message”键值,但不知道如何访问 events [{'logStreamName': 'omkar/default/c09fabdb-c8f6-4e2b-935d-d8acd81fe5b6', 'timestamp': 1581492608825, 'message': 'initial_run.py', 'ingestionTime': 1581492608977, 'eventId': '35268463702765787750672147556453127
events [{'logStreamName': 'omkar/default/c09fabdb-c8f6-4e2b-935d-d8acd81fe5b6',
'timestamp': 1581492608825, 'message': 'initial_run.py', 'ingestionTime': 1581492608977, 'eventId':
'35268463702765787750672147556453127148731795119999483904'}, {'logStreamName':
'omkar/default/c09fabdb-c8f6-4e2b-935d-d8acd81fe5b6', 'timestamp': 1581492608825,
'message': 'initial_run.sh', 'ingestionTime': 1581492608977, 'eventId': '35268463702765787750672147556453127148731795119999483905'}, {'logStreamName':
'omkar/default/c09fabdb-c8f6-4e2b-935d-d8acd81fe5b6', 'timestamp': 1581492608825,
'message': 'second_script.sh', 'ingestionTime': 1581492608977, 'eventId': '35268463702765787750672147556453127148731795119999483906'}, {'logStreamName': 'omkar/default/c09fabdb-c8f6-4e2b-935d-d8acd81fe5b6', 'timestamp': 1581492608865,
'message': 'in python output_2 hello output_2', 'ingestionTime': 1581492608977, 'eventId': '35268463703657817558613372482114555879637729580238700547'}, {'logStreamName': 'omkar/default/c09fabdb-c8f6-4e2b-935d-d8acd81fe5b6', 'timestamp': 1581492608866, 'message': 'output_2', 'ingestionTime': 1581492608977,
'eventId': '35268463703680118303811903105256091597910377941744680964'}, {'logStreamName': 'omkar/default/c09fabdb-c8f6-4e2b-935d-d8acd81fe5b6', 'timestamp': 1581492608868, 'message': '/usr/local/bin/initial_run.py', 'ingestionTime': 1581492608977, 'eventId': '35268463703724719794208964351539163034455674664756641797'}]
您可以使用列表理解获得消息值列表-
message_list = [x['message'] for x in events]
*这假定事件中的每个条目始终存在一个消息键。如果没有,您可能需要使用
通过使用key(meassage)在事件anf中进行迭代,您可以得到它。您可以试试这个
res=list(map(lambda x:x['message'],events))
print(res)
#['initial_run.py', 'initial_run.sh', 'second_script.sh', 'in python output_2 hello output_2', 'output_2', '/usr/local/bin/initial_run.py']
如果不想使用
lambda
,可以使用itemgetter
from operator import itemgetter
res=list(map(itemgetter('message'),events))
它实际上是嵌套的dic..消息键在事件键内..并且希望访问消息的值key@swapnildeshpande首先,您最初的问题没有提到嵌套字典,其次,它仍然可以工作,因为它只需要访问事件中的任何内容。它将为您提供一个列表,其中列出了dictionaries@swapnildeshpande我编辑了我的代码,以包括访问
响应10
中的值(您在对另一个答案的评论中提到)为了使它更清晰,EV是普通变量,它将保存事件列表中存在的每个词汇。它给我类型错误:字符串索引必须是整数粘贴代码,粘贴您所做的操作。因为它在这里工作并逐个打印消息键的值'response10=client1.filter_log_事件(logGroupName='/aws/batch/job',#logStreamNames=[#'omkar/default',#],logstreamnameffix='omkar/default',#startTime=123,#endTime=123,#filterPattern='string',#nextToken='string',#limit=123,#interleaved=True | False)打印(响应10)“……response10是我们公司的名称dic@swapnildeshpande您可以编辑您的问题并将其添加到代码中,而不是将其作为注释添加到受字符数限制的位置,此外,到目前为止,这里的所有三个答案都可以从您提供的词典列表中获取消息
的所有值,选择你最喜欢的并尝试实现它只是好奇,以这种方式映射是否比常规的列表理解更快?在过滤器、映射和列表理解中,什么是最快的并没有确凿的事实。然而,在大多数情况下,列表理解速度最快,过滤速度最慢。但在某些情况下,列表理解实际上较慢@karanshishoo,除非性能对这段代码(例如在一个非常常用的函数中)非常重要,否则更喜欢更简洁易读的列表理解。@DorianTurba同意,我会提到使用列表理解的解决方案,但已经有人发布了。因为我不想发布重复的解决方案。所以,发布替代解决方案。如果你认为我应该发布它更好,那么我会发布它并添加学分。事实上,它是相反的:“除了列表理解的语法优势外,它们通常与地图的等效使用一样快或更快。”-因此,是的,你应该改为使用列表理解。这是一个有效的答案,所以请保持原样,但与列表理解相比,它不太像pythonic,也不太优化。
from operator import itemgetter
res=list(map(itemgetter('message'),events))