Jun-05-2021, 04:11 PM
def selectFromDictianories( dictianories , compareKeys , compareValues , returnKeys , booleanPop = False , booleanVerbose = True ): dictianoriesToReturn = [] for intDic, currentDictianory in enumerate(dictianories): if booleanVerbose: print( "Durchsuche:", dictianories, "\n" , "Vergleiche Schlüssel:", ", ".join(compareKeys) , "von:", currentDictianory, "Soll:", compareValues ) try: listComparison = [ currentDictianory[key] for key in compareKeys ] except KeyError as errorKeyMissing: if booleanVerbose: print( "Warnung! Diese Funktion nimmt an, dass alle Schlüssel" , compareKeys , "im zu durchsuchenden Wörterbuch" , currentDictianory , "tatsächlich vorkommt, was nicht der Fall ist.\n" , "Es fehlt:", errorKeyMissing ) listComparison = [] if booleanVerbose: print("Vergleiche:", listComparison, "mit:", compareValues) # TODO: Kann es passieren, dass # ENTEWEDER listComparison und compareValues zufällig gleich sind # ODER sie prinzipiell gleich sind, aber die Reihenfolge nicht stimmt. if listComparison != [] and listComparison == compareValues: print("Treffer für:", currentDictianory) dictianoryToReturn = {} for k in returnKeys: dictianoryToReturn[k] = currentDictianory[k] dictianoriesToReturn.append(dictianoryToReturn) if booleanPop: dictianories.pop(intDic) return dictianoriesToReturn