Ich habe eine JSON Datei, die ziemlich einfach ist (aber wirklich groß) und ich muss es ein wenig filtern. (I haben jetzt jede Python für eine Weile getan ...)Python effiziente Möglichkeit, dict zu filtern
Es sieht wie folgt aus:
{
'entry_1': {
'field_1' : 'value',
'field_2' : 123,
'field_3' : '',
'field_4' : 456
},
'entry_2': {
'field_1' : 'value',
'field_2' : 321,
'field_3' : 'value',
'field_4' : 654
},
...
}
Ich möchte es filtern die nutzlosen Felder zu entfernen. Meine Testdatei ist klein, was ich getan habe funktioniert gut, aber ich muss es auf eine ziemlich große Datei tun und ich weiß, dass mein Code ziemlich hässlich ist.
Bisher habe ich dies getan:
dict_in = json.load(INFILE)
dict_out = defaultdict(dict) #4harambe
allowed_fields = {'field_1', 'field_3'}
'''should I use a set or a tuple here ? or maybe something else
All data inside will be unique (set) but
those data wont change (tuple)
'''
for entry in dict_in:
for field in dict_in[entry]:
if field in allowed_fields and not dict_in[entry][field]:
# allowed field plus non empty string
dict_out[entry][field] = dict_in[entry][field]
Ich mag gerne wissen, wie ich es ein bisschen sexier und effizienter machen können (die Doppel-Loop + if-Anweisung ist ziemlich schlecht zusammen mit der Art und Weise Ich greife auf die Daten zu). Ich habe über itertools gelesen, aber ich weiß noch nicht, wie ich es benutzen soll und ob es eine gute Idee ist.
Lassen Sie es als 'set()' O (1) gegenüber Tupel O (n). Auch von den Antworten unten ist Ihre am besten lesbar und genau die möglicherweise gleiche Leistung. – salparadise