diff --git a/src/MultiIndexValuesProvider.py b/src/MultiIndexValuesProvider.py index f783013b29a..e2a4bf38437 100644 --- a/src/MultiIndexValuesProvider.py +++ b/src/MultiIndexValuesProvider.py @@ -1,14 +1,12 @@ -# FK-TODO: zu langsam +import pandas as pd + + class MultiIndexValuesProvider: @staticmethod def getValues(multiIndex): - return set(MultiIndexValuesProvider._concat(MultiIndexValuesProvider._tuples2Lists(multiIndex.values))) - - @staticmethod - def _tuples2Lists(tuples): - return [list(tuple) for tuple in tuples] - - @staticmethod - def _concat(lsts): - return sum(lsts, []) \ No newline at end of file + df = multiIndex.to_frame(index = False) + values = (pd + .concat([df[column] for column in df.columns]) + .unique()) + return set(values) diff --git a/src/MultiIndexValuesProviderTest.py b/src/MultiIndexValuesProviderTest.py index 0da5c527dc8..63dd686d902 100644 --- a/src/MultiIndexValuesProviderTest.py +++ b/src/MultiIndexValuesProviderTest.py @@ -4,7 +4,22 @@ import pandas as pd class MultiIndexValuesProviderTest(unittest.TestCase): - def test_getValues(self): + def test_getValues_1_level(self): + # Given + value1 = '1808982' + value2 = 'EW0175' + multiIndex = pd.MultiIndex.from_tuples( + names = ['VAX_LOT1'], + tuples = [[value1], + [value2]]) + + # When + values = MultiIndexValuesProvider.getValues(multiIndex) + + # Then + self.assertEqual(values, {value1, value2}) + + def test_getValues_2_levels(self): # Given value1 = '1808982' value2 = 'EW0175'