Что-то вроде этого рекурсивно?
data={'driver':'1.1','dmname':'1.5-temp','fdrmenu':'1.0-rem'}
def check(data,key):
val = data.pop(key)
if type(val) == str:
print(key,val)
if data: check(data,list(data.keys())[0])
return None
check(data,list(data.keys())[0])
Я не уверен, правильно ли я понимаю ваш вопрос, поэтому я не знаю, нахожусь ли я на правильном пути.
ЭтоФункция в основном берет словарь (данные) элементов пар ключ / значение, и вы вызываете его со словарем и его первым ключом.
check(data,list(data.keys())[0])
Внутри функции вы извлекаете значение, связанное с ключом, и удаляете пару
val = data.pop(key)
Таким образом, словарь начинался как
{'driver':'1.1','dmname':'1.5-temp','fdrmenu':'1.0-rem'}
первый ключэто «драйвер» и значение «1.1».Итак, теперь переменная val == '1.1', но словарь теперь
{'dmname':'1.5-temp','fdrmenu':'1.0-rem'}
, потому что первая пара ключ / значение была удалена с помощью функции pop
Затем, используя val, вы извлеклипроверьте условие
if type(val) == str:
в этом случае val == '1.1', чтобы он проверил, а затем вы напечатали ключ и значение 'driver' и '1.1'
, затем выубедитесь, что в словаре нет None, и если это не так, вы вызываете ту же функцию тем же способом, что и раньше, но, поскольку вы удалили первую пару ключ / значение из словаря, следующим первым элементом ключ / значение будет 'dmname':'1.5-temp'
{'dmname':'1.5-temp','fdrmenu':'1.0-rem'}
Следующим вызовом словаря будет только один элемент
{'fdrmenu':'1.0-rem'}
, а последний вызов словаря будет пустым
{}
так что условие
if data
не будет проверяться и функция вернет None
Вы можете сделать что-то подобное с парами параметров и значений в вашем случае, если я правильно понимаю ваш вопрос.
Я изменил весельеЕсли вы хотите использовать тип данных, который у вас, по-видимому, есть, то результат этой функции будет
driver 1.1
dmname 1.5-temp
fdrmenu 1.0-rem