folgendes Problem: ich habe einen Datensatz (aus OpenStreetMap), der folgendermaßen strukturiert ist:
Code: Alles auswählen
ways = [(way_id1, {'key': 'value'}, [coord_id11, coord_id12, coord_id13]),
(way_id2, {'key': 'value'}, [coord_id21, coord_id22, coord_id23]),
(way_id3, {'key': 'value'}, [coord_id31, coord_id32, coord_id33]]
Ich möchte der Liste "ways" nur jene Tuples behalten, welch im Dictionary bestimmte Werte haben, und zwar 'highway': 'secondary und 'highway': 'tertiary'. Alle anderen Tuples, die entweder ein leeres Dictionary haben oder andere Values zum Key, sollen dementsprechend gelöscht werden.
Auch kann das Dictionary im Tuple auf die verbleibende Value reduziert werden.
Als Python-Neuling habe ich das Ganze folgendermaßen gelöst, bei sehr großen Datensätzen, scheint dies aber sehr ineffizient zu sein:
Code: Alles auswählen
relevant_ways = []
for (way_id, way_tag, way_refs) in ways:
if 'highway' in way_tag.keys() and way_tag['highway'] in ['secondary', 'tertiary']:
relevant_ways.append((way_id, way_tag['highway'], way_refs))
Danke für eure Hilfe!
Michael
__________________
Hier noch ein kurzer realer Auszug aus einem originalen Datensatz zum Probieren:
Code: Alles auswählen
ways = [(34428729, {'highway': 'living_street'}, [395670212, 1418765744, 395670248, 395670251]),
(128360258, {}, [1418764756, 1418765545, 1418765699, 1418764526, 1418764756]),
(132606717, {'highway': 'secondary'}, [96916521, 96916524, 96916531, 96916535, 96916537, 96916539, 96916542, 2890145250, 96916548, 308345678, 96916552, 96916555, 2489391717, 96916558, 96916561, 3770243842, 96916563]),
(132606700, {'highway': 'primary'}, [413283866, 413283867, 413283868, 33466827]), (133792713, {}, [1352845081, 1472526502, 1472526503, 1472526506, 1472526504, 1472526501, 1472526500, 1472526499, 1472526498, 1472526497, 1472526496, 1472526494]),
(97534711, {}, [1129255618, 1129256133, 1129255674, 1129255705, 1129255997, 1129255874, 1129256160, 1129256048, 1129255582, 1129255317, 1129255748, 1129255771, 1129255599, 1129256074, 1129255618]),
(32571664, {'highway': 'tertiary'}, [355693493, 297777213, 381225556, 2308946489, 297777222, 349236565, 349236561, 297777231, 349236514]),
(28000595, {'highway': 'tertiary'}, [307460606, 1113060707, 766466339, 1113060320, 1113061560, 307460607, 307464071, 307462882])]