从python列表中提取元素

时间:2018-08-02 16:53:48

标签: python

我有以下格式的python列表:

original_list = [
   {
    'label'   : 'A',
    'summary' :  data_out,
    'details' :  data_a,
        },
    {
     'label'   : 'B'
     'summary' : data_out_2,
     'details' : data_b, 
        },......]

对于此处列出的标签。我还有另一个形式为

的列表
label_list= ['A','F','G']

我需要做的是将两个列表连接在一起,得到一个新列表,该列表与原始列表中的标签与label_list中的元素相匹配;所以在这种情况下,我要寻找的输出是:

new_list = [
   {
    'label'   : 'A',
    'summary' :  data_out,
    'details' :  data_a,
        },
    {
     'label'   : 'F'
     'summary' : data_out_6,
     'details' : data_f,},
    {
      'label'   : 'G'
     'summary' : data_out_7,
     'details' : data_g,}]

我尝试了几种不同的方法,但是我是python的新手,并且停留在这一部分。谢谢!

3 个答案:

答案 0 :(得分:1)

使用熊猫更清洁的方法

import pandas as pd

original_list = [
   {
    'label'   : 'A',
    'summary' : data_out,
    'details' :  data_b,
    },
    {
     'label'   : 'B',
     'summary' : data_out,
     'details' : data_b, 
     }]
label_list=['A', 'F', 'G']
d1=pd.DataFrame(original_list)
d2=pd.DataFrame(label_list,columns =['label'])
x=d1.merge(d2)
x.to_dict('records')

答案 1 :(得分:1)

正常的列表理解就能胜任

new_list = [x for x in original_list if x['label'] in label_list]

答案 2 :(得分:-1)

使用列表推导的单线:

new_list = [x for x in original_list if (x['label'] in label_list)]

迭代original_list的所有元素,并将(x['label'] in label_list)为真的元素编译到新列表中。