在 Python 中过滤列表字典

use*_*110 1 python dictionary

我有以下字典:

dict = {'Sex':['Male','Male','Female','Female','Male'],
        'Height': [100,200,150,80,90],
        'Weight': [20,60,40,30,30]}
Run Code Online (Sandbox Code Playgroud)

我希望能够使用一个键的条件过滤该字典。例如,如果我只想保留男性:

new_dict = {'Sex':['Male','Male','Male'],
            'Height': [100,200,90],
            'Weight': [20,60,30]}
Run Code Online (Sandbox Code Playgroud)

Mos*_*oye 5

您可以使用字典理解'Sex'在构建值列表时检查键对应索引处的项目:

d = {k: [x for i, x in enumerate(v) if dct['Sex'][i]=='Male'] 
                                      for k, v in dct.items()}
print(d)
# {'Sex': ['Male', 'Male', 'Male'], 
#  'Weight': [20, 60, 30], 
#  'Height': [100, 200, 90]}
Run Code Online (Sandbox Code Playgroud)