我有这本词典:
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]}
任何人都可以想到如何做到这一点?
答案 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]}