Python 使用列表理解返回新列表
我有一个dict数组,我想得到一个特定的属性,并基于这些属性创建一个新的dict列表 我尝试使用列表理解来解析每一行,而不是使用传统的循环。有可能吗Python 使用列表理解返回新列表,python,Python,我有一个dict数组,我想得到一个特定的属性,并基于这些属性创建一个新的dict列表 我尝试使用列表理解来解析每一行,而不是使用传统的循环。有可能吗 from datetime import datetime from dateutil.parser import parse def _format_string_to_timestamp(dt, output): if dt is None or type(dt) == float: return "" or
from datetime import datetime
from dateutil.parser import parse
def _format_string_to_timestamp(dt, output):
if dt is None or type(dt) == float:
return ""
origin_dt = parse(dt)
return origin_dt.strftime(output)
def extract_tickets_tags_history(audit):
tag_history = []
sync = "1234"
tags = [d for d in audit['events'] if d.get('field_name', '') == 'tags']
if len(tags) > 0:
return [
{
'tag': tag,
'updated': _format_string_to_timestamp(audit['created_at'], "%Y-%m-%d %H:%M:%S"),
'ticket_id': audit['ticket_id'],
'tagged': False,
'user_id': audit['author_id'],
'sync': sync
}
for tag in tags[-1]['value']]
return None
audit = {
'ticket_id': 123,
'author_id': 654,
'created_at': '2019-04-07T01:09:40Z',
'events': [
{
'field_name': 'tags',
'value': ['taga', 'tagb']
}
]
}
example = [
{
'id': 123,
'data': [audit]
}
]
result = [extract_tickets_tags_history(data) for data in x['data'] for x in example]
我收到一个错误name错误:未定义名称“x”
...
结果应该是类似于
[{“tag”:“…”,“updated”:“…”,…}]
在列表中将这两个循环交换为循环
result = [extract_tickets_tags_history(data) for x in example for data in x['data'] ]
这相当于
result = []
for x in example:
for data in x['data']:
result.append(extract_tickets_tags_history(data))
是否可以获得单个数组而不是[[{…}]]?我已解决了您的错误
NameError:name'x'未定义
,您可能需要将\u format\u string\u的定义添加到\u timestamp
开始,还有什么是[{…}]
?是的!它解决了错误NameError:name'x'未定义
,但我希望有一个列表,而不是[{'tag':'taga','updated':'2019-04-07 01:09:40','ticket\u id':123','taged':False',user\u id':654',sync':'1234'},{'tag':'tagb','updated':'2019-04-07 01:09:40',ticket_id':123,'taged':False,'user_id':654,'sync':'1234'}]
。可能我需要调整结果。我已经将格式字符串的定义添加到时间戳中
解决了它结果=[x中的数据示例中的香蕉['data']提取中的香蕉\u tickets\u历史(data)]