提取到一行中的多个列表以进行循环

时间:2019-11-20 08:17:01

标签: 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 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]

非常感谢。 亚历克斯

1 个答案:

答案 0 :(得分:4)

也许这行得通(不知道这是否是最佳解决方案):

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

上面的行返回元组,要返回列表,请添加另一张地图:

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