根据应用于其中一个列表

时间:2016-08-14 17:30:37

标签: python list dictionary

我有这本词典:

d={'names': ['Mark', 'Amir', 'Matt', 'Greg', 'Owen', 'Juan'], 'weight': [165, 189,
 220, 141, 260, 174], 'height': [66, 71, 72, 68, 58, 62]}

我想过滤掉所有列表,以便它们只包含对应高于70的高度的项目。

我知道如何单独过滤列表。例如,高度列表:

d["height"]=[height for height in d["height"] if height>70]

这将返回字典,并将高度列表过滤掉:

{'names': ['Mark', 'Amir', 'Matt', 'Greg', 'Owen', 'Juan'], 'weight': [165, 189,
 220, 141, 260, 174], 'height': [71, 72]}

但是,这不是我想要的。我想要的是:

{'names': ['Amir', 'Matt'], 'weight': [189,220], 'height': [71, 72]}

任何人都可以想到如何做到这一点?

1 个答案:

答案 0 :(得分:3)

您可以使用词典理解。

d = {
    'names': ['Mark', 'Amir', 'Matt', 'Greg', 'Owen', 'Juan'],
    'weight': [165, 189, 220, 141, 260, 174],
    'height': [66, 71, 72, 68, 58, 62]
}

filtered_dict = {
    key: [value for i, value in enumerate(d[key]) if d['height'][i] > 70]
    for key in d
}
print filtered_dict  # {'names': ['Amir', 'Matt'], 'weight': [189, 220], 'height': [71, 72]}