ich habe folgenden Code in einer etwas unschönen Struktur und frage mich ob man dieses Problem auch eleganter lösen kann:
Da ich den realen Code nicht posten kann, habe ich ein Beispiel konstruiert:
Der reale Code ist Teil einer Instanz-Methode, was aber für das Problem kaum eine Rolle spielt, denke ich.
Der Sinn der ganze Sache ist 'dictionary_data' in eine Gruppierungsstruktur zu mappen.
Code: Alles auswählen
class SomeClass:
def __init__(self):
self.dictionary_data = {"A": 1, "B": 2, "C": 3, "F": 6} # Nur als Beispiel, wird sonst aus anderer Quelle bereitgestellt.
def do_the_mapping(self, mapping_data):
items = {}
for key, value in mapping_data.items():
if isinstance(value, dict):
item_group = {}
for nested_key, nested_value in value.items():
try:
item_group[nested_key] = self.dictionary_data[nested_value]
except KeyError:
print(f"Missing Element {nested_key}: {nested_value}")
else:
# Sinnlose Aktion nur um zu zeigen, dass hier noch etwas mit den Werten passieren soll
item_group[nested_key] += 1
item_group[nested_key] -= 1
items[key] = item_group
else:
try:
items[key] = self.dictionary_data[value]
except KeyError:
print(f"Missing Element {key}: {value}")
else:
# Sinnlose Aktion nur um zu zeigen, dass hier noch etwas mit den Werten passieren soll
items[key] += 1
items[key] -= 1
return items
if __name__ == "__main__":
mapping_data = {
"Group1": {
"AItem": "A",
"BItem": "B"
},
"DItem": "D",
"EItem": "E",
"CItem": "C"
}
some_instance = SomeClass()
items = some_instance.do_the_mapping(mapping_data)
print(items)
Code: Alles auswählen
Missing Element DItem: D
Missing Element EItem: E
{'Group1': {'AItem': 1, 'BItem': 2}, 'CItem': 3}
Ich hatte überlegt diesen Teil in ein Methode auszulagern, bin mir aber nicht sicher ob das wirklich die beste Lösung ist.
Hat jemand Vorschläge?