Python 在循环的一行中提取到多个列表

Python 在循环的一行中提取到多个列表,python,Python,我有一个类似于follow的表格数据,并希望提取每个列的数据 data = [ {'id': 1, 'val': 'A'}, {'id': 3, 'val': 'C'}, {'id': 2, 'val': 'B'}, {'id': 7, 'val': 'E'}, {'id': 1, 'val': 'G'}, ] list_id = [item['id'] for item in data ] list_val = [item['val'] for item

我有一个类似于follow的表格数据,并希望提取每个列的数据

data = [
    {'id': 1, 'val': 'A'},
    {'id': 3, 'val': 'C'},
    {'id': 2, 'val': 'B'},
    {'id': 7, 'val': 'E'},
    {'id': 1, 'val': 'G'},
]
list_id = [item['id'] for item in data ]
list_val = [item['val'] for item in data ]
或者只是:

for item in data:
    list_id.append(item['id'])
    list_val.append(item['val'])
但是,我可以知道有一种方法像这样写一行吗

list_id, list_val = [item['id'], item['val'] for item in data]
非常感谢。 Alex

也许这可以奏效(不知道这是否是最好的解决方案):

上面的行返回元组,对于返回的列表,请添加另一个映射:

list_id, list_val = map(list, zip(*list(map(lambda x: (x['id'], x['val']), data))))

您正在寻找
zip(项目['id'],项目['val'])
?您能分享详细信息吗?我想在一行中获取所有单列数据。这不是重复的,因为我的问题在一行解决方案中非常具体。投票最多的答案包含两个一行解决方案:。是的,这是有效的。可能是目前为止最好的解决方案
list_id, list_val = map(list, zip(*list(map(lambda x: (x['id'], x['val']), data))))