我有一个表格数据,例如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]
非常感谢。 亚历克斯
答案 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))))