2016-08-14 1 views
-1

Ich habe dieses Wörterbuch:filtern alle Listen eines Wörterbuchs auf der Grundlage einer auf einer der Listen zugespannten Zustand

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

Und ich will alle so ihre Listen filtern, dass sie nur die Elemente enthalten, die entsprechen zu einer Höhe von mehr als 70.

Ich weiß, wie man Listen einzeln filtert. Zum Beispiel Liste der Höhe:

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

Und das wird das Wörterbuch mit der Höhe Liste zurück herausgefiltert:

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

Allerdings, das ist nicht das, was ich will. Was ich will ist:

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

Jeder kann sich vorstellen, wie man das macht?

+7

Abgesehen: Ihre Daten wäre viel einfacher, mit auf diese Weise zu arbeiten, wenn Sie jede Person, die Informationen zusammen gehalten, das heißt, wenn Sie eine Liste der Wörterbücher wie '[{‚height‘verwendet: 66,‚name‘: 'Mark', 'Gewicht': 165}, {'Höhe': 71, 'Name': 'Amir', 'Gewicht': 189}, etc.] 'stattdessen. – DSM

Antwort

3

Sie können Wörterbuchverständnis verwenden.

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]} 
Verwandte Themen