Учитывая данные, подобные приведенным ниже
{'a': [{'id': 0, 'res': [0, 1]}, {'id': 1, 'res': [8, 9]}], 'b': [{'id': 26, 'f': ('f3', {'nrP': 1})}, {'if': 0, 'f': ('f1', {'init': 6, 'nrS': 14})}], 'c': ('setup', {}), 'd': ('setup', {'max': 'one', 'sim': 'true'}), 'e': [{'id': 8, 'period': ('sl160', 8), 'res': 23}], 'f': [2, 3], 'g': {'f0': 0, 'p0': [{'id': 1, 'Value': -1}], 'ref': [{'id': 0, 'rs': ('abc', 0)}]}}
Необходимо иметь все ключи (включая вложенные), значение которых равно 1), для которых значение является кортежом & 2), имеет ровно 2 элемента в кортеже и 3) оба элемента являются либо строками, либо числами (не dict / list или другой структурой данных), преобразованными в строку tuple[0] + ":" + tuple[1]
. Примеры ключей, которые бы соответствовали приведенным выше данным, были бы - 'period': ('sl160', 8)
& 'rs': ('abc', 0)
. Для приведенного выше примера ожидаемый результат будет таким, как показано ниже.
{'a': [{'id': 0, 'res': [0, 1]}, {'id': 1, 'res': [8, 9]}], 'b': [{'id': 26, 'f': ('f3', {'nrP': 1})}, {'if': 0, 'f': ('f1', {'init': 6, 'nrS': 14})}], 'c': ('setup', {}), 'd': ('setup', {'max': 'one', 'sim': 'true'}), 'e': [{'id': 8, 'period': 'sl160 : 8', 'res': 23}], 'f': [2, 3], 'g': {'f0': 0, 'p0': [{'id': 1, 'Value': -1}], 'ref': [{'id': 0, 'rs': 'abc : 0'} ]}}
Преобразование кортежа к строке вполне нормально. Требуется помощь в определении вложенных ключей, соответствующих указанному выше условию, и выполнении преобразования на месте