#python #dictionary #object
#python #словарь #объект
Вопрос:
Итак, я хочу убедиться, что конкретное значение key является примитивным типом данных, то есть не словарем. Если это словарь, я хочу рекурсивно проверять, пока не дойду до конца. (базовый вариант -: в значениях нет словаря) Допустим, у меня есть этот код
dict ={
"Roll No" : "1",
"Car" : {
"Ferrari" : "12",
"Pontiac" : "15"`
},
"Budget" : "3"
}
Как мне получить «Car» в качестве ключа, тип данных значений которого является словарным?
И как мне получить доступ к вложенному словарю?
{ "Car":{
"Ferrari":"12",
"Pontiac":"15"
},
}
Комментарии:
1. Что не так с
dict['Car']
?2. Я не думаю, что это сработает. Я имею в виду, что я хочу сделать это рекурсивно, поэтому, если в Car возможны подразделы, я бы застрял? если Car может быть его собственным словарем, к которому я могу получить доступ, тогда это сработает!
3. @AkshayNevrekar На самом деле dict[‘Car’] будет полезен для получения значений и проверки, действительно ли они являются словарем, а не строкой. Спасибо!
Ответ №1:
Вы можете использовать type()
функцию python, чтобы решить, является ли элемент словарем, и, следовательно, когда выполнять рекурсию:
searchDictionary( haystack, needle ):
for key in haystack.keys():
if type( haystack[key] ) is dict:
searchDictionary( haystack[key], needle )
elif type( haystack[key] ) is str:
# TODO - match string
if ( haystack[key] == needle ):
print( "Found at " str(key) )
elif type( haystack[key] ) is int:
# TODO - match integer
pass
Существует множество других способов перебора словаря, но я выбрал этот метод, чтобы проиллюстрировать ответ в удобочитаемой форме.