Python 使用列表理解返回新列表

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

我有一个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 ""
    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)]