Python中如何提取列表内字典相同键对应的所有值?
实现字典列表按键拆分的方法
当然可以实现,这里提供几种简单高效的方式:
方法一:列表推导式
这是最直接易懂的写法,针对每个key单独提取:
data = [{'name': 'Alessandra', 'age': 24}, {'name': 'Sasha', 'age': 37}, {'name': 'Jason', 'age': 42}] names = [item['name'] for item in data] ages = [item['age'] for item in data] print(names) # 输出: ['Alessandra', 'Sasha', 'Jason'] print(ages) # 输出: [24, 37, 42]
方法二:利用zip批量提取(适合多key场景)
如果需要提取的key较多,可以用这种方式一次性获取所有对应列表,避免重复遍历原数据:
data = [{'name': 'Alessandra', 'age': 24}, {'name': 'Sasha', 'age': 37}, {'name': 'Jason', 'age': 42}] names, ages = zip(*[(item['name'], item['age']) for item in data]) # 注意zip返回的是元组,若需要列表可转成list: names = list(names) ages = list(ages) print(names) # 输出: ['Alessandra', 'Sasha', 'Jason'] print(ages) # 输出: [24, 37, 42]
方法三:动态提取所有key对应的列表(通用写法)
如果不确定原字典有哪些key,可以动态遍历所有key来生成对应的列表:
data = [{'name': 'Alessandra', 'age': 24}, {'name': 'Sasha', 'age': 37}, {'name': 'Jason', 'age': 42}] result = {} for key in data[0].keys(): result[key] = [item[key] for item in data] names = result['name'] ages = result['age'] print(names) # 输出: ['Alessandra', 'Sasha', 'Jason'] print(ages) # 输出: [24, 37, 42]
内容的提问来源于stack exchange,提问作者lizard
相关产品推荐
相关产品推荐

