从python中现有的dict列表中获取子集dict的列表

时间:2017-12-07 10:59:45

标签: python python-3.x pandas dataframe

下面有一个dict列表,每个dict包含两个键。

original_list = [
    {
        'label': 'First Name',
        'value': 'Leo',
    },
    {
        'label': 'Last Name',
        'value': 'Lee',
    },
    {
        'label': 'Gender',
        'value': 'Male',
    },
    {
        'label': 'Age',
        'value': 35,
    },
    {
        'label': 'Telephone',
        'value': '13788995566',
    }
]                   

我想在dict中只有一个键('标签')获得一个新的dict列表。

# expecting output like below
new_list =  [
    {
        'label': 'First Name'
    },
    {
        'label': 'Last Name'
    },
    {
        'label': 'Gender'
    },
    {
        'label': 'Age'
    },
    {
        'label': 'Telephone'
    }
]

我知道一种方法可以解决。

new_list = [{'label': d['label']} for d in original_list]
print(new_list)

有什么方法更方便吗?

如果original_list数据在一个pandas DataFrame中,如何获得相同的结果?

2 个答案:

答案 0 :(得分:1)

如果输入为DataFrame,则按子集[[]]选择输出列,并使用参数orient='records'调用to_dict

df = pd.DataFrame(original_list)
print (df)
        label        value
0  First Name          Leo
1   Last Name          Lee
2      Gender         Male
3         Age           35
4   Telephone  13788995566

print (df[['label']].to_dict(orient='records'))
[{'label': 'First Name'}, 
 {'label': 'Last Name'}, 
 {'label': 'Gender'}, 
 {'label': 'Age'}, 
 {'label': 'Telephone'}]

答案 1 :(得分:1)

就像你的一样!列表理解,甚至有点长:)但绝对有一种方法:)

[{e: i} for d in original_list for e,i in d.items() if e =='label']